GitHub CLIで組織以下のリポジトリのWebhookを一覧表示する
GitHub CLIで組織以下のリポジトリのWebhookを一覧表示するには以下のようにする。
gh api /orgs/:org/repos --paginate | jq -r '.[].name' | xargs -I{} gh api /repos/:org/{}/hooks
:org
は組織名を指定する。
ユーザ以下のリポジトリのWebhookを一覧表示するには以下のようにする。
gh api /users/:user/repos --paginate | jq -r '.[].name' | xargs -I{} gh api /repos/:user/{}/hooks
:user
はユーザ名を指定する。
コマンドの解説
APIでリポジトリ一覧を取得
gh api /orgs/:org/repos
、gh api /users/:user/repos
はそれぞれ組織・ユーザー以下のリポジトリ一覧を取得する。
デフォルトでは30件のみを取得する。30件以上取得したい場合は--paginate
オプションでページネーションを有効にし、全てのリポジトリを取得する。
取得結果は以下の形式のJSONが返される。
[
{
"id": xxxxxxx,
"node_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"name": "リポジトリ名",
...
},
{
...
}
]
リポジトリ一覧
上記のJSONからname
を抽出するためにjq
を使う。
jq -r '.[].name'
は上記name
の値を抽出する。
gh api /orgs/:org/repos | jq -r '.[].name'
で以下のようなリポジトリ名の一覧が取得できる。
xxx-repo1
xxx-repo2
...
リポジトリ名一覧を受け取り、Webhook一覧を取得
最後の部分... | xargs -I{} gh api /repos/:user/{}/hooks``xargs
ではリポジトリ名一覧を受け取り、
それぞれのリポジトリ名に対してさらにgh
コマンドを実行してWebhook一覧を取得している。
xargs
コマンドに-I{}
オプションを指定し、{}
にリポジトリ名を代入してコマンドを実行している。
\第一線のプログラマーの行動原理を学べる!/