始めに
タイトルの通りです。
最近 GitHub CLI にはまってて、
gh pr create --draft
で簡単にドラフト PR 作れるので、それでサクッと作ったり
gh repo view --web
でリポジトリのページにアクセスしたり、
マウスアクションに頼る機会がどんどん減っていって、気持ちが良いです。
僕も全部を使い倒せてるわけではないですが、まだまだたくさんあるので、ぜひ皆さんも使ってみてください。
さて、そんな便利な GitHub CLI ですが、
なんと gh コマンドを自作することができるのです。
GitHub CLI extension とは
その名の通り
GitHub CLI の拡張機能です。
で、拡張機能を自分で作って、それを公開することができるので
すごい簡単に OSS 開発っぽいことに挑戦できるので、なんだか「あ〜俺めちゃくちゃエンジニアしてる〜〜〜〜」って気持ちになれます。
基本的に公式と Bash の書き方のページだけ見ればなんでもできるっぽいです。
やったこと
とりあえずサクッと、
自分の GitHub のページにアクセスできる拡張機能を作ってみました
gh extension create gh-my-page
#!/bin/bash
set -e
url=$(gh api user --jq .html_url)
open $url
gh extension install .
gh my-page
とすると GitHub の自分のページがブラウザで表示されます
面白え!!!!!
進化させてみた
自分のだけ表示できてどうするんだ、ということで、
他の人の名前も見れるようにしてみました
用件は
- 引数があると、その名前のページを表示する
- 引数がない時は、自分のページを表示する
- それっぽくするためにヘルプコマンドを用意する
gh extension create gh-page
#!/bin/bash
set -e
name=""
while [ $# -gt 0 ]; do
case "$1" in
-h | --help)
echo "First argument is want to display account or organization name."
echo "default, your github account name."
echo "e.g."
echo '$ gh page yasudanaoya'
exit 0
;;
-* | --*)
echo "$1 is not found"
exit 0
;;
*)
name="$1"
;;
esac
shift
done
if [ -z "$name" ]; then
name=$(gh api user -q .login)
fi
open https://github.com/$name
gh extension install .
# 以下の二つは同じ結果
gh page
gh page yasudanaoya
終わりに
普段フロントエンジニアとして、画面のあるものしか作っていないので、こう言った画面を持たない機能の開発は新鮮で楽しかったです。
心残りがあるとすれば、最後に作った gh extension では
-
や --
から始まる GitHub のページにはアクセスができないことです。
バリデーション的に存在するかどうかわかんないですが