ようへいの日々精進XP

よかろうもん

Github API で仕事が捗ったのでメモ 〜 Nヶ月後の自分の為に 〜

これは

YAMAP エンジニア Advent Calendar 2021 の第 13 日目の記事にします。

qiita.com

そして、記事の内容は、以下の記事の焼き直しです。

inokara.hateblo.jp

経緯 (1)

Github Organization 内のリポジトリで .circleci/config.yml が存在しているリポジトリを抽出する必要がありました。

やったこと (1)

事前に Personal Access Token (xxx_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX) を取得しておいて、例えば、oreno-tools Organization を検索してみると...

$ curl -s \
  -H "Authorization: token xxx_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
  -H "Accept: application/vnd.github.v3+json" \
  'https://api.github.com/search/code?l=YAML&p=2&q=org%3Aoreno-tools+in%3Apath+%22.circleci%2F%22&type=Code&per_page=100' \
| jq -r .items[].repository.full_name

以下のように出力されました。

oreno-tools/bibuild
oreno-tools/wafoo
oreno-tools/amiCtrl

いい感じです。

以下のドキュメントを参考にしました。

docs.github.com

経緯 (2)

同じく、Github Organization 内のリポジトリで Terraform コード (HCL) が存在しているリポジトリを抽出する必要がありました。

やったこと (2)

事前に Personal Access Token (xxx_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX) を取得しておきます。例えば、oreno-tools Organization を検索してみると...

TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
curl -s \
  -H "Authorization: token $TOKEN" \
  -H "Accept: application/vnd.github.v3+json" \
  'https://api.github.com/search/repositories?q=org%3Aoreno-tools+language:hcl&sort=&order='
| jq -r .items[].html_url

残念、oreno-tools Organization 内には、HCL が含まれたリポジトリはありませんでした。

検索結果が存在していない場合には、以下のように出力されます。

{
  "total_count": 0,
  "incomplete_results": false,
  "items": [

  ]
}

HCL ではなく、Ruby コードが含まれるリポジトリを検索してみましょう。

TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
curl -s \
  -H "Authorization: token $TOKEN" \
  -H "Accept: application/vnd.github.v3+json" \
  'https://api.github.com/search/repositories?q=org%3Aoreno-tools+language:ruby&sort=&order='
| jq -r .items[].html_url

以下のように出力されました。

https://github.com/oreno-tools/furikake
https://github.com/oreno-tools/daimyo
https://github.com/oreno-tools/wafoo
https://github.com/oreno-tools/seiton
https://github.com/oreno-tools/releases.oreno.tools

いい感じです。

以下のドキュメントを参考にしました。

docs.github.com

以上

N ヶ月後の自分の為に書きました。