GitHub CLI v2.0で草を見られるようにした
先日、GitHub公式CLIのgh
コマンドのメジャーバージョンアップがありました。
このバージョンアップで、ユーザーの定義したサブコマンドをextensionとして追加できるようになりました。
gh extension install owner/gh-my-extension
というコマンドで、gh my-extension
というサブコマンドを追加できます[1]。
git
にも類似の機能[2]がありますね。
こちらを使って、自分もサブコマンドを作成してみたので紹介します。
gh graph
ターミナルで草を見るその名もgh graph
です。
ターミナルに草を生やします。
GitHubの緑の表は、国内だと「草」と呼ばれていますが、海外向けにはgrass
とかleaves
では通じなそうな感じがしました[3]。
公式では「コントリビューショングラフ」と表記されているようなので、gh graph
にしました。
リポジトリはこちら。
つかいかた
gh
およびcurl
がインストールされていること、gh auth login
でログインしていることが必要です。
以下でインストール・実行ができます。
❯ gh extension install kawarimidoll/gh-graph
❯ gh graph
解説
実態は以下の単純なシェルスクリプトです[4]。
#!/bin/bash
USER=$(gh api user --jq .login)
if [ $? -ne 0 ]
then
echo "${USER}"
exit 1
fi
curl "https://github-contributions-api.deno.dev/${USER}.term"
gh api
を使ってgh
にログインしているユーザー名を取り出し、curl
で以下のAPIを呼び出しているだけです。
オリジナルではわりと長いURLをcurl
する必要がありましたが、こちらではgh graph
だけで済むので簡単になりました。
なお、他ユーザーの草を確認したい場合はこれまで通りcurl
で呼ぶ必要があります。
オプションを使えるようにするかも→しました
上記APIではscheme
やpixel
といったオプションを使えます。
今回のextensionでもgh graph --scheme=pink
のように対応したいとは考えています。
ただ、オプションの扱いはシェルスクリプトのままではちょっと難しいと感じているので、いつ実装に至るかはわかりません…。
こういう場合はGo等が使いやすいんですかね。詳しい方いましたらアドバイスを貰えるとありがたいです。
実装しました。
おわりに
gh
に追加されたサブコマンド機能の紹介でした。
様々なサブコマンドがgh-extension
というトピックで公開されているので、以下のページを見ると面白いものが見つかるかもしれません。
また、今回は特に、過去に自分が作ったものを後から出てきたツールや技術と組み合わせられる…というのが面白いと思いました。
作品を増やしていけば、さらに組み合わせの可能性が広がりそうです。
ということで、今後も色んなものを作っていきます。
Star⭐おねがいします!
Discussion