ghとfzfを使ってコマンドラインからリポジトリに紐づくPull Requestを開く
ターミナルから1手でカレントディレクトリに紐づいているgitのPRを開く方法です。
依存環境
依存環境は以下です。
結論
結論はこちらです。
gh pr list | fzf | awk '{print $1}' | xargs gh pr view --web
解説
gh pr list
リポジトリに紐づいているPull Requestを一覧で表示してくれます。
GitHub CLI | Take GitHub to the command line
fzf
fuzzy findしてくれます。かなり便利。
https://github.com/junegunn/fzf
awk '{print $1}'
fzfで一つPRを選ぶと以下のようなフォーマットで値が変えるので、awkで抽出します。
PR番号 PRのタイトル ブランチ名 OPEN/CLOSE Date
xargs gh pr view --web
PRの番号を投げると、該当するPull Requestを開いてくれます。
GitHub CLI | Take GitHub to the command line
xargsを何故つけてるか
パイプで繋げたらそのままいけるのでは?と思う人もいると思いますが、パイプでつなげるだけでは正しく動いてくれません。
gh pr viewは(おそらく引数を渡さずに実行できる関係で)標準入力を読んでくれないみたいでそのまま実行されてしまいます。
ドキュメントを読むと以下のように書いています。
Without an argument, the pull request that belongs to the current branch is displayed.
current branchに紐づいているpull requestが表示されるみたいです。
xargsは標準入力に渡された値とxargsのあとに続くコマンドを連結させてコマンドとして実行されるみたいなので、xargsをつけることでちゃんと動いてくれました。
xargsとパイプの違いに関しては以下の説明がわかりやすかったです。
https://teratail.com/questions/63845#reply-307588
まとめ
これでいちいちブラウザでリポジトリにアクセスしてPRを開く手間が省けました。fzfのpreviewのオプションとか使ったらもっといい感じになると思うので時間あったらやりたいですね。
Discussion