Edited at

GitHubの自分が所有しているリポジトリをcURLで取得する

GitHubのAPIを使います。


TOKENの取得

こちらから取得します。

Screen Shot 2018-11-07 at 11.51.19.png

権限はrepoを出しておきます。(inviteとかいらないかも)

Screen Shot 2018-11-07 at 11.51.10.png

取得したTOKENとGitHubユーザー名を環境変数に設定しておきます。

$ export TOKEN=xxcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

$ export USER=yousan


実行

$ curl -s -u $USER:$TOKEN "https://api.github.com/user/repos?per_page=100&visibility=all&page=1"

こんな感じで出てきます。

image.png


オプション

指定できるオプションです。

オプション名
説明

per_page
一回当たりの取得件数。100が最大値。

visibility
パブリック(public)、プライベート(private)リポジトリを指定。両方はall。

page
ペジネーション。1以上の数字で指定する。


jq

出力結果はjqを入れておくと見やすいです。

参考: jq コマンドを使う日常のご紹介


htmlのURL取得

リポジトリのURLを取得する絞り込み。

$ curl -s -u $USER:$TOKEN "https://api.github.com/user/repos?page=1&per_page=1000&visibility=public" | jq '.[].html_url'

image.png

grepと組み合わせれば簡易的な検索ができます。


クォーテーションなし

$ curl -s  -u $USER:$TOKEN "https://api.github.com/user/repos?page=1&per_page=1000&visibility=public" | jq -r '.[].html_url' | head -n 20

image.png


SSHのURL取得

自分のリポジトリを手元にクローンして作業ときはSSHのURLが便利です。

image.png


検索してクローン

応用して検索してクローンします。

git clone $(curl -s  -u $USER:$TOKEN "https://api.github.com/user/repos?page=1&per_page=1000&visibility=public" | jq -r '.[].ssh_url' | grep factorio)

ペジネーションと複数引っかかってしまうことに注意が必要です。

image.png


その他

GitHubに限定ですがhubコマンドがすごく便利です。

参考: GitHubユーザーのためのhubコマンド

そこに検索が加わるとすごく便利だなぁと思ってます。

https://github.com/github/hub/issues/833

というかすでに良い感じのパッケージがあるっぽかったです。

コマンドラインからgithubを検索してgit cloneをする with ghs, peco and ghq