以前書いた記事で、curl + jq を使い、Github API で Pull Requestに関する base / head branch を取得できることを試しました。
Github の Pull Request に紐づく base / head branch を curl と jq で取得する
今回は、リポジトリの選択をより簡単にできるよう、ghq + peco でのリポジトリ選択を組み合わせてみることを試しました。
前提環境
- MacOSX 10.13.6
- ghq 0.8.0
- peco 0.5.3
- jq 1.5
- GitHub Access Token 取得済み (未取得の場合は Creating a personal access token for the command line - User Documentation 参照)
※ ghq, peco, jq はいずれも HomeBrew でインストールできます。
準備方針
下記方針で準備していきます。
- ghq でローカルに GitHub リポジトリの一覧を作成
- peco で GitHub リポジトリの一覧をインクリメンタルサーチ可能に
- curl で GitHub API を実行
- jq でレスポンスを加工
事前準備
GitHub リポジトリのリストを作る
ghq で、Pull Request を確認したいリポジトリをローカルにクローンしておきます。
$ ghq get <repo URL>
ワンライナーを準備
下記ワンライナーをシェルの設定に追記します。
僕の場合は zsh を使っているので、.zshrc
にエイリアス登録し、source ~/.zshrc
などでロードしておきます。
alias pb='curl -sH "Authorization: token ${GITHUB_API_TOKEN}" "https://api.github.com/repos/$(ghq list | sed s#github.com\/##g | peco)/pulls" | jq ".[] | { number: .number, title: .title, base: .base.ref, head: .head.ref }"'
curl, jq の部分は、以前の記事 を踏襲しています。
追加した部分は、$(ghq list | sed s#github.com\/##g | peco)
の部分で、:owner/:repo
の部分を抽出してインクリメンタルサーチで選択できるようにしました。
GITHUB_API_TOKEN
は、.zshrc
にべた書きしたくなかったので、別ファイルgithub_credentials
に切り出し、ロードする形にしました。
※.github_credentials の中身を直接 Git 管理しないよう、.gitignore に指定しておくなど、注意してください!
export GITHUB_API_TOKEN=xxx
GITHUB_CREDENTIAL_FILE=~/.github_credentials
if [ -e $GITHUB_CREDENTIAL_FILE ]; then
source $GITHUB_CREDENTIAL_FILE
fi
利用方法
alias に登録しておいた pb
を実行すると、
ghq でクローンしてきたリポジトリのリストをインクリメンタルサーチできるようになります。
そしてリポジトリを選択すると、リポジトリの Pull Request と source/head branches を確認できるようになります。
今回は facebook/react の Pull Request 一覧を表示してみました。
終わりに
peco + ghq の組み合わせで、 GitHub APi の実行がより便利になりました。
今回は Pull Request に関する API の実行を試しましたが、 Issues など、他の API でも応用できるなと思いました。