created: 2024-08-29T07:48:34.891Z
GitHub の gh コマンドで 4 年以上動いてない issue に Stale ラベルをまとめてつける
GitHub の UI から作業してもすぐなんだけれども、半年に 1 回くらいでやってるとスクリプトでやりたくなりそうなのでメモしておく。
なお、大人の事情で GitHub Actions が利用できないという背景がある。
コマンド
# github のこの形式のやつ
export REPO=sakamossan/myapp
ラベルをつける候補を stale-issue.json
というファイルに出して事前に確認。
gh issue list \
--repo $REPO \
--state open \
--label "UI" \
--search "updated:<$(gdate -d "4 years ago" +%Y-%m-%d)" \
--json number,updatedAt,title | jq . | tee /tmp/stale-issue.json
問題なかったら xargs で実行。
cat /tmp/stale-issue.json \
| jq .[].number \
| xargs -I{} gh issue edit "{}" --add-label "Stale" --repo $REPO
gh issue list の挙動メモ
gh コマンドは --label
オプションを重複して渡すと AND で検索してくれる
gh issue list --repo $REPO \
--label "UI" \
--label "Stale"
ただし、--search
オプションを複数渡すと最後の 1 つだけが有効になる。
↓ のようにすると "-label:UI"
(UI ラベルがないもの)という条件だけで検索になってしまう。
gh issue list \
--repo $REPO \
--state open \
--search "updated:<$(gdate -d "2 years ago" +%Y-%m-%d)" \
--search "-label:UI"
複数条件をつけたい場合は 1 つの --search
オプションに複数入れる。
gh issue list \
--repo $REPO \
--state open \
--search "-label:SRE -label:UI updated:<$(gdate -d "2 years ago" +%Y-%m-%d)"