8
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GitHub CLI extension 作ってみた

Last updated at Posted at 2021-10-17

始めに

タイトルの通りです。

最近 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
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
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 のページにはアクセスができないことです。
バリデーション的に存在するかどうかわかんないですが

8
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?