【GitHub】【curl】コード検索の結果をリポジトリ名一覧で取得する

2022年8月29日

目次

はじめに

お世話になります、hosochinです
GitHub(GUI)の検索って少々使いにくくないですか?てことで今回は「GitHubのRest API」を使ってみようと思います
たとえばキーワードに一致したリポジトリ名の一覧の取得…みたいなのをAPI使って実現しようと思います👍

GitHubのSearch APIについて

公式ドキュメントはこちら
https://docs.github.com/ja/rest/search

検索APIのエントリポイント一覧

エントリポイント検索内容
/search/codeデフォルトブランチで様々な条件でコードを検索する
/search/commitsデフォルトブランチで様々な条件でコミットを検索する
/search/issues状態とキーワードでissueを検索する
/search/labels検索キーワードに一致する名前または説明を含むラベルをリポジトリで検索する
/search/repositories様々な基準でリポジトリを検索する
/search/topics様々な基準でトピックを検索する
/search/users様々な基準でユーザを検索する

特定Organization内のコードを検索する

  • サンプルリクエスト
curl -H "Authorization: token <TOKEN>" \
-H 'Accept: application/vnd.github.text-match+json' \
'https://api.github.com/search/code?q=<検索キーワード>+org:<特定のorganization>'

使用可能なラベルについては以下を参照
https://docs.github.com/ja/search-github/searching-on-github/searching-code

text-matchを指定することで検索結果の詳細を取得することができます

検索キーワードに一致したリポジトリ一覧を取得する

jqコマンドを使って結果をいい感じに整形したいと思います

  • jqコマンドをインストール
  • 公式ドキュメントはこちら
brew install jq
  • リポジトリ一覧を取得する
curl -H "Authorization: token <TOKEN>" \
-H 'Accept: application/vnd.github.text-match+json' \
'https://api.github.com/search/code?q=<検索キーワード>+org:<特定のorganization>' \
| jq '[.items[].repository.name] | unique'

[
  "repositoryA",
  "repositoryB",
  "repositoryC"
]

ただこのままだと…

API側の制限で最大100件までしかレスポンス返してくれないんです泣
101件目以降はpage=2みたいにリクエストする必要があり、次ページが尽きるまでリクエストし続ける必要が。。
こちらについてはまた今度書きたいなと思ってます😎

技術curl,GitHub,jq

Posted by hosochin