Github 上にある特定 user のリポジトリをぜんぶローカルに持ってきたいなぁというときのワンライナー。
nablarch
のところは適当なユーザに書き換えれば OK。ghq ではなく単に git を使いたければ、ghq get
を git clone
に変えれば良いです。
$ curl 'https://api.github.com/users/nablarch/repos?per_page=100' | jq -r '.[]["clone_url"]' | xargs -n1 -P4 ghq get
Github API
Github には API があって、参照だけなら HTTP リクエストを送るだけで情報を取得できるようになってます。特定ユーザのリポジトリ一覧を得る API はこちら。
デフォルトでは 30 件しか取得できなくてページングさせる必要がありますが、per_page
パラメータを使うと 1 ページあたり 100 件まで取得できるようになります。
jq
jq に関しては特筆すべきことはないんですが、ダブルクオテーションを削除するために -r
(--raw-output
) を指定しています。
xargs
こちらも特段特別なことはしてないのですが、ghq get
は引数が リポジトリ 1 つなので、-n 1
を指定しています。
また、clone 処理をはやめに終わらせるために -P 4
を指定して並列度を上げてます。このへんは CPU によって調節すれば良いでしょう。