【ワンライナー】GitHub IssueをCSVに一覧する【gh | jq】 | Dev Driven 開発・デザインチーム 【ワンライナー】GitHub IssueをCSVに一覧する【gh | jq】 | 働くひとと組織の健康を創る iCARE

BLOG

【ワンライナー】GitHub IssueをCSVに一覧する【gh | jq】

こんにちは。kaztoです。

TL;DR

 gh issue list -L 1000 --json "number,title,createdAt,state,labels" | jq -r '.[] | [.state, .createdAt, .number, .title, ([.labels[].name] | join("/")) ] | @csv'

以下詳細

経緯

GitHub上で開発していると、大抵の場合Issueを使います。(よね?)

そして、Issueはどんどん溜まっていきます。

GitHubのUIでは、何度もページ遷移して一覧性がイマイチですよね。

そこで、GitHub CLI と jq を使って、見やすいデータに加工したいと思いました。

事前準備(gh、jqコマンドのインストール)

$ brew install gh jq

GitHubにログインします。

$ gh auth login

詳細は https://cli.github.com/manual/gh_auth_login をご覧ください。

gh issue list

gh issue listコマンドでは、以下のような情報を取得できます。

Available fields:
  assignees
  author
  body
  closed
  closedAt
  comments
  createdAt
  id
  labels
  milestone
  number
  projectCards
  reactionGroups
  state
  title
  updatedAt
  url

idとIssue Numberが別物であることに注意してください。

適宜欲しいやつを列挙します。

jq

-r (--raw-output) オプションをつけることで、出力を(雑な)CSV形式にすることができます。
GitHubのラベルは1Issueに対して複数つけることができますので、配列にしてjoinで連結するなどしています。
欲しい情報をクエリして、最後に @csv 関数を通すと、ちゃんとしたCSV形式に整形してくれます。

いかがでしたでしょうか

jq を使いこなすと、いろいろはかどりますね。