GitHubのAPIを使います。
TOKENの取得
こちらから取得します。

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

取得した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"
こんな感じで出てきます。
オプション
指定できるオプションです。
オプション名 | 説明 |
---|---|
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'
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
SSHのURL取得
自分のリポジトリを手元にクローンして作業ときはSSHのURLが便利です。
検索してクローン
応用して検索してクローンします。
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)
ペジネーションと複数引っかかってしまうことに注意が必要です。
その他
GitHubに限定ですがhubコマンドがすごく便利です。
参考: GitHubユーザーのためのhubコマンド
そこに検索が加わるとすごく便利だなぁと思ってます。
https://github.com/github/hub/issues/833
というかすでに良い感じのパッケージがあるっぽかったです。
コマンドラインからgithubを検索してgit cloneをする with ghs, peco and ghq