🍀

GitHub CLI v2.0で草を見られるようにした

2021/08/26に公開

先日、GitHub公式CLIのghコマンドのメジャーバージョンアップがありました。

https://github.com/cli/cli/releases/tag/v2.0.0

このバージョンアップで、ユーザーの定義したサブコマンドをextensionとして追加できるようになりました。

https://forest.watch.impress.co.jp/docs/news/1346017.html

gh extension install owner/gh-my-extensionというコマンドで、gh my-extensionというサブコマンドを追加できます[1]
gitにも類似の機能[2]がありますね。

こちらを使って、自分もサブコマンドを作成してみたので紹介します。

ターミナルで草を見るgh graph

その名もgh graphです。
ターミナルに草を生やします。
https://twitter.com/KawarimiDoll/status/1430444420860563462

GitHubの緑の表は、国内だと「草」と呼ばれていますが、海外向けにはgrassとかleavesでは通じなそうな感じがしました[3]

公式では「コントリビューショングラフ」と表記されているようなので、gh graphにしました。

https://docs.github.com/ja/github/setting-up-and-managing-your-github-profile/managing-contribution-graphs-on-your-profile/viewing-contributions-on-your-profile

リポジトリはこちら。
https://github.com/kawarimidoll/gh-graph

つかいかた

ghおよびcurlがインストールされていること、gh auth loginでログインしていることが必要です。

以下でインストール・実行ができます。

❯ gh extension install kawarimidoll/gh-graph
❯ gh graph

解説

実態は以下の単純なシェルスクリプトです[4]

gh-graph
#!/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を呼び出しているだけです。

https://zenn.dev/kawarimidoll/articles/b573f617a51c0b

オリジナルではわりと長いURLをcurlする必要がありましたが、こちらではgh graphだけで済むので簡単になりました。
なお、他ユーザーの草を確認したい場合はこれまで通りcurlで呼ぶ必要があります。

オプションを使えるようにするかも→しました

上記APIではschemepixelといったオプションを使えます。
今回のextensionでもgh graph --scheme=pinkのように対応したいとは考えています。
ただ、オプションの扱いはシェルスクリプトのままではちょっと難しいと感じているので、いつ実装に至るかはわかりません…。
こういう場合はGo等が使いやすいんですかね。詳しい方いましたらアドバイスを貰えるとありがたいです。

実装しました。
https://twitter.com/KawarimiDoll/status/1432281439165460483

おわりに

ghに追加されたサブコマンド機能の紹介でした。

様々なサブコマンドがgh-extensionというトピックで公開されているので、以下のページを見ると面白いものが見つかるかもしれません。

https://github.com/topics/gh-extension

また、今回は特に、過去に自分が作ったものを後から出てきたツールや技術と組み合わせられる…というのが面白いと思いました。
作品を増やしていけば、さらに組み合わせの可能性が広がりそうです。
ということで、今後も色んなものを作っていきます。

Star⭐おねがいします!
https://github.com/kawarimidoll/gh-graph

脚注
  1. ログを見ると~/.local/share/gh/extensionsに対象をcloneし、それを呼び出しているようです ↩︎

  2. PATHの通ったディレクトリ内のgit-hogeという実行ファイルをgit hogeという形式で実行できる ↩︎

  3. 'github grass'とかで検索しても日本人の書いたっぽい記事しか出ないため ↩︎

  4. 現在はオプションの解析が入っているため複雑化していますが、本質は変わっていません ↩︎

Discussion