準備
curl、jqが必要なので未インストールならインストールをする
$ brew install jq curl
実行方法
リポジトリのクローンを保存するディレクトリへ移動し、以下のコマンドを叩く。
- 個人アカウントの場合
$ curl https://api.github.com/users/{PERSONAL ACCOUNT}/repos | jq .[].ssh_url | xargs -n 1 git clone
- 組織アカウントの場合
$ curl https://api.github.com/orgs/{ORGANIZATION ACCOUNT}/repos | jq .[].ssh_url | xargs -n 1 git clone
解説
上記ワンライナーの解説
curl
cURL
*1はURLシンタックスを用いてファイルを送信または受信するコマンドラインツール。
今回はGitHub API にリクエストを投げるために利用する。
https://api.github.com/users/{PERSONAL ACCOUNT}/repos
GitHubが提供するAPIエンドポイント*2。 GET methodなのでパスの{PERSONAL ACCOUNT} を個人アカウント名に変えてブラウザで叩けばjsonが返ってくる。
例: https://api.github.com/users/tic40/repos
jq .[].ssh_url
jq
*3 はコマンドラインjsonプロセッサー。
APIレスポンスのjson配列の中から "ssh_url" の値を取り出す。
xargs -n 1 git clone
xargs
*4 はUnixコマンドの一つ。
xargs -n 1
で1つの引数を受け取る。受け取った引数はその後に続く git clone
の末尾に追加される。
感想
git clone ssh_url/*.git
でいけるのかな〜とか思ったら、まあそんな簡単にはいかず。意外と面倒だった。