cli/cli をシェルでちょっといい感じにする

はじめに

GitHub製のCLIツールである GitHub - cli/cli: GitHub’s official command line tool の小ネタです。

ちなみに clihttps://github.com/github/hub というツールの後継に当たります。

zsh と peco でシュッっとブラウザに飛ぶをやってみる

チーム開発でよくしたくなるのは、手元でissueやPRの一覧を確認して、シュッっとブラウザに飛ぶことではないでしょうか。

ghコマンドで実際にissueとPRをブラウザで開くコマンドは以下のような形式を取ります。 ですが、issueやPRの番号とかいちいち覚えてないと思います。

gh issue view <number> --web
gh pr view <number> --web

なので、

gh issue list
gh pr list

などの一覧を取得するコマンドから番号だけ抜き取るようにします。

❯ gh pr list                          

Showing 4 of 4 pull requests in kayac/ddl-maker

#23  Support for FULL TEXT index  shmokmt:full-text-index
#22  add LF to EOF                shogo82148:add-lf-to-eof
#21  Add new nullable types       shogo82148:add-new-nullable-types
#20  add go.mod                   shogo82148:add-go-mod

空白で列を分割できそうなので、awk で分割してあげます。

gh issue list | peco | awk -F" " '{print $1}' | read num; gh issue view $num --web
gh pr list | peco | awk -F" " '{print $1}' | read num; gh pr view $num --web

毎回これらのコマンドを実行するのは面倒なので、function として ~/.zshrc にでも登録してあげると良いと思います。

function issue() {
  line=$(gh issue list | peco)
  num=$(echo "${line}" | awk -F" " '{print $1}')
  gh issue view "${num}" --web
}

function pr() {
  line=$(gh pr list | peco)
  num=$(echo "${line}" | awk -F" " '{print $1}')
  gh pr view "${num}" --web
}

これでコマンドを実行するカレントディレクトリがGitHubリポジトリ配下だった場合に対象のページをシュッっと開くことができます。

合わせて読みたい