gh
GitHub が公式で開発している GitHub CLI クライアントである gh コマンドが cli/cli で公開されているのだが今まで使ってこなかった。
そんなある日、いつものようにMarkdown を書いていると、見慣れた GitHub の CSS でプレビューしたいな (N 度目) と思いいくつかの Markdown エディタで GitHub テーマを適用してほぼオリジナルに近いプレビューできるのはどれだと探してきたが、どこかしら微妙に違ってまだ出ていないかと諦めていた。
そんなときにこのブログを見た。
READMEをpush前にプレビューできるGitHub CLI拡張を作った - ゆーすけべー日記
めっちゃ GitHub。Live-reloading もできるし「これだよ! これ!」という感じ。どうやら gh コマンドの拡張機能 (extension) として公開されているらしい。
yusukebe/gh-markdown-preview
$ gh extension install yusukebe/gh-markdown-preview
これでインストールができる。めっちゃかんたん。ここで gh extension というのがあるのだと知り、探してみると色々あることに気づく。gh コマンドが出た当初はこんなものはなかった気がするので、自分が使わなかったうちに相当開発が進んでいたらしい。
GitHub CLI extension
そうなると色々試したくなる。おもしろそうと思って色々インストールしているうちにたくさんになった。
$ gh extension list
gh branch mislav/gh-branch b2e79733
gh dash dlvhdr/gh-dash 50cd7818
gh md yusukebe/gh-markdown-preview v1.4.0
gh poi seachicken/gh-poi v0.9.0
gh q kawarimidoll/gh-q 5dc627f3
手持ちの環境は2台 (会社用、個人用) なのでいい感じに同期しておきたく dotfiles にブチ込む用のスクリプトを書いた。
#!/bin/bash
gh extension install mislav/gh-branch
gh extension install dlvhdr/gh-dash
gh extension install yusukebe/gh-markdown-preview
gh extension install seachicken/gh-poi
gh extension install kawarimidoll/gh-q
これでもいいけど install とスクリプトへの追加が別になっているとインストールはしたけどスクリプト側を更新するの忘れてた、になるのがイケてない。
どうしたものかと思っていたら afx があったじゃないかと思い出す。afx は開発ツール版 Terraform みたいなもので、YAML に書いたものをインストール・アップデートできるなど持続的な管理ができる。これに gh extension を対応させてしまおうというのが今回のお話。
gh を afx で管理する
本題。
Support gh extension by b4b4r07 · Pull Request #58 · b4b4r07/afx
afx に as.gh-extension というパラメータを追加して gh extension ですよと認識させることにした。あとは YAML を書いて afx install するだけになる。ちなみに rename-to というパラメータを追加したので、gh markdown-preview
のように長いコマンドも gh md
にエイリアスすることができて便利になった。
(gh は呼び出す実装が gh 側のロジックによる部分が大きいため alias gh-md=gh-markdown-preview
では動かない)
github:
- name: yusukebe/gh-markdown-preview
description: GitHub CLI extension to preview Markdown looks like GitHub.
owner: yusukebe
repo: gh-markdown-preview
as:
gh-extension:
name: gh-markdown-preview
tag: v1.4.0
rename-to: gh-md