ghrls: GitHub Tags / Releases を手元からシュッと確認するツールを作った
GitHub に push されたタグの一覧、またタグに紐付いた Releases の情報をワンコマンドでシュッと表示するツール ghrls を作りました。
背景
自分は何かアプリケーション・ライブラリを作るときに依存ライブラリのバージョンを細かく気にする質で、たいてい Semantic Versioning でいう patch version レベルで指定しています (e.g. ~> 1.6.10
, ~1.6.10
)。
そういうわけで新しい依存を加えるときはまず最新バージョンがいくつか確認しているのですが、そのために毎回
- 該当リポジトリをブラウザで開く
- コミット数と並んでいる
30 Releases
をクリックして開く - 先頭に記載されたバージョン番号を確認する
というステップを踏んでいて、さすがに面倒になっていました。
Releases に上がっている tarball の URL を確認するには、さらに「タグをクリックして開く」「tarball を右クリックで “Copy Link Address"」が加わりやってられない。
というわけで面倒くさいが高じた結果、手元でサクッと確認したいということになり ghrls を作りました。
使い方
ghrls list <user/name>
で、そのリポジトリの Tag / Release 一覧を表示します。
$ ghrls list kubernetes/kubernetes | head TAG TYPE CREATEDAT NAME v1.6.0-alpha.0 TAG v1.5.3-beta.0 TAG v1.5.2 TAG+RELEASE 2017-01-12 13:51:15 +0900 JST v1.5.2 v1.5.2-beta.0 TAG v1.5.1 TAG+RELEASE 2016-12-14 09:50:36 +0900 JST v1.5.1 v1.5.1-beta.0 TAG v1.5.0 TAG+RELEASE 2016-12-13 08:29:43 +0900 JST v1.5.0 v1.5.0-beta.3 TAG+RELEASE 2016-12-09 06:52:35 +0900 JST v1.5.0-beta.3 v1.5.0-beta.2 TAG+RELEASE 2016-11-25 07:29:04 +0900 JST v1.5.0-beta.2
ghrls get <user/name> <tag>
で、指定したタグの Release 情報を表示します。
対応するコミットハッシュや作成日、Release にアップロードされた成果物 URL などが表示されます。
$ ghrls get kubernetes/kubernetes v1.5.2 Tag: v1.5.2 Commit: 08e099554f3c31f6e6f07b448ab3ed78d0520507 Name: v1.5.2 Author: saad-ali CreatedAt: 2017-01-12 13:51:15 +0900 JST PublishedAt: 2017-01-12 16:25:50 +0900 JST URL: https://github.com/kubernetes/kubernetes/releases/tag/v1.5.2 Assets: https://github.com/kubernetes/kubernetes/releases/download/v1.5.2/kubernetes.tar.gz See [kubernetes-announce@](https://groups.google.com/forum/#!forum/kubernetes-announce) and [CHANGELOG](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG.md#v152) for details. SHA256 for `kubernetes.tar.gz`: `67344958325a70348db5c4e35e59f9c3552232cdc34defb8a0a799ed91c671a3` Additional binary downloads are linked in the [CHANGELOG](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG.md#downloads-for-v152).
各プラットフォーム対応バイナリを上げてある例も:
$ ghrls get dtan4/s3url v1.0.0 Tag: v1.0.0 Commit: 0ebc096229e46f560827b9e041479abf5cf3823b Name: Author: dtan4 CreatedAt: 2017-02-06 00:59:16 +0900 JST PublishedAt: 2017-02-06 01:04:06 +0900 JST URL: https://github.com/dtan4/s3url/releases/tag/v1.0.0 Artifacts: https://github.com/dtan4/s3url/releases/download/v1.0.0/s3url-v1.0.0-darwin-386.tar.gz https://github.com/dtan4/s3url/releases/download/v1.0.0/s3url-v1.0.0-darwin-386.zip https://github.com/dtan4/s3url/releases/download/v1.0.0/s3url-v1.0.0-darwin-amd64.tar.gz https://github.com/dtan4/s3url/releases/download/v1.0.0/s3url-v1.0.0-darwin-amd64.zip https://github.com/dtan4/s3url/releases/download/v1.0.0/s3url-v1.0.0-linux-386.tar.gz https://github.com/dtan4/s3url/releases/download/v1.0.0/s3url-v1.0.0-linux-386.zip https://github.com/dtan4/s3url/releases/download/v1.0.0/s3url-v1.0.0-linux-amd64.tar.gz https://github.com/dtan4/s3url/releases/download/v1.0.0/s3url-v1.0.0-linux-amd64.zip https://github.com/dtan4/s3url/releases/download/v1.0.0/s3url-v1.0.0-windows-386.tar.gz https://github.com/dtan4/s3url/releases/download/v1.0.0/s3url-v1.0.0-windows-386.zip https://github.com/dtan4/s3url/releases/download/v1.0.0/s3url-v1.0.0-windows-amd64.tar.gz https://github.com/dtan4/s3url/releases/download/v1.0.0/s3url-v1.0.0-windows-amd64.zip
インストール
Mac をお使いであれば Homebrew でインストールできます。 Go で書いてワンバイナリ吐くようにしておくと、Homebrew で簡単に配布できて最高。
$ brew tap dtan4/tools $ brew install ghrls
GitHub Releases で各プラットフォーム対応のバイナリを配布しています。
このまま即使うこともできますが、GitHub API の制限で未ログインユーザは1時間に60回しか API call できないようになっています (参照)。 IP ベースの制限なので、オフィス / 集合住宅からの通信や Homebrew を併用する場合は速攻で上限に引っかかる可能性があります。
なので、心配な方はここから Personal Access Token を発行して、GITHUB_TOKEN
環境変数にセットしておいてください1。これなら1時間5000回まで上限緩和されます。
おわりに
ghrls を作ったおかげで、新しくツールを作るときの初速がだいぶ上がりました。 バグとか Feature Request、Pull Request をぜひいただけると幸いです :pray: