GitHubのCLIからGitHubのAPIをたたくことができる
最近知って便利でよく使っているが、GitHub CLIのオプションを使って特定のパラメータを渡す場合と渡さない場合どちらも同じGraphQLのクエリを使いたいというパターンの話
具体的に言うと件数が100件以上ある場合、GitHubのAPIだと100件が上限なので2回目以降のリクエストでendCursorの値を渡してafterに指定する必要がある
cursorの値を渡す場合と渡さない場合でもクエリは統一して扱いたい
- projects.graphql
query($projectId: ID! $cursor: String){
node(id: $projectId) {
... on ProjectNext {
items(first: 100, after: $cursor) {
pageInfo {
hasNextPage
endCursor
}
nodes{
title
id
updatedAt
fieldValues(first: 8) {
nodes{
value
projectField{
name
}
}
}
}
}
}
}
}値が必須かどうかは!をつけるかで変わる
この場合ID!となっているので$projectIdは必須パラメータ、$cursorはオプショナルなパラメータ(null許容)
実際のコマンドは下記(環境変数としてGITHUB_PROJECT_IDを定義済みの前提)
- 引数あり(cursor付き)
gh api graphql -f query="$(cat projects.graphql)" -f projectId=${GITHUB_PROJECT_ID} -f cursor=hogehoge- 引数なし(cursorなし)
gh api graphql -f query="$(cat projects.graphql)" -f projectId=${GITHUB_PROJECT_ID}どちらもエラーにならず結果が返ってくる


