読者です 読者をやめる 読者になる 読者になる

詩と創作・思索のひろば

ドキドキギュンギュンダイアリーです!!!

GitHub のコミットステータスをターミナルで確認できるやつ

GitHub Go

タイトルは若者エントリメーカーで生成しました。

コミットステータスというのは GitHubAPI で特定のコミットに success/failure/pending のステータスを与えることができるやつで、例えば CI でテストした結果がプルリクエストのウェブ画面で確認できる。誰でも見たことあると思う。

f:id:motemen:20140701133830p:plain

業務でも使ってるけど、git push したあとにいちいち結果を確認するのが面倒だったので、ターミナルから確認できるようなのを作った。

プロンプトに表示するとこういう感じで✓が確認できて便利(最後に設定例があります)。

f:id:motemen:20140701134611p:plain

インストール・使い方

% go get github.com/motemen/github-commit-status-mark

普通に起動すると現在のリポジトリの最新のコミット(HEAD)のステータスを GitHub から取得してきて、色付きの文字で表示する。

f:id:motemen:20140701133525p:plain

このスクリーンショットにはないけど、ステータスが存在しないときは "?" と表示する。

設定

まずはいつも通り https://github.com/settings/tokens/new からトークンを作成してください。たぶん "repo:status" 権限だけで動くと思う。パブリックリポジトリだけなら設定しなくてもいいけど、たぶんすぐに API Limit に達すると思う。

環境変数

GITHUB_COMMIT_STATUS_TOKEN にトークンを入れる。この場合 GitHub:Enterprise に対応してないので微妙。

.netrc (new!)

あの .netrc に拙作のツールとしては初めて挑戦。ドメインに対するアカウント設定となるので、他の GitHubツールが .netrc に対応していればトークンを共有することになる。楽だけど、権限の管理という点では不安な一面も。

domain api.github.com
    user motemen
    password YOUR_TOKEN
domain ghe.example.com
    user motemen
    password YOUR_TOKEN

.gitconfig

おなじみ gitconfig。github-commit-status.token もしくは github-commit-status.https://ghe.example.com/.token にトークンを設定する。

[github-commit-status]
token = YOUR_TOKEN

[github-commit-status "https://ghe.example.com/"]
token = YOUR_TOKEN

キャッシュ

外部の API を叩くので、.github-commit-status/ 以下にキャッシュを作って、前の結果を一定期間キャッシュするようにしてる。特に一度 success か failure になった結果は永遠にキャッシュされる。-update-cached オプションでキャッシュを強制的に更新したり、絶対に API リクエストをしないようにしたりできる。

プロンプトに表示する

自然にステータスを確認できるように、エンジニアのフロンティアであるシェルのプロンプトにこれを表示したいけれど、プロンプト描画のたびに API アクセスが発生すると使いづらいので、バックグラウンドで通信を行いつつ、プロンプトに表示する内容はキャッシュされたものを使う、という風にしてみてる。こんな感じ。

https://github.com/motemen/dotfiles/blob/3373c12/.zshrc#L174-L177

以上です

motemen/github-commit-status-mark · GitHub

追記