🐌

GitHub CLI で issue の既存の説明文の後に固定の文字列を追加したい

2023/04/26に公開

概要

issue 本文の末尾に何かを追加したいときってありますよね。例えば、最初は何も考えずにissue作っちゃったけど開発が進むにつれて

# リリース前にチェックするすごいチェックリスト

- [ ] 動く?
- [ ] 大丈夫そ?
- [ ] 本当に大丈夫そ?

こういうリリース前のチェックリストみたいなのが欲しくなった。。。みたいなケースです。

GitHub CLI なら簡単にできるのかな〜と思いつつAPIで調べてみみました。 --body オプションはそれらしいかな〜と思いつつこれは完全に上書きしてしまうので求めているものではなさそうです。
gh issue edit - GitHub CLI | Take GitHub to the command line

ChatGPT に聞いても存在しない --append オプションを使えとか言われて困ったのであれこれ試してみました。結果、大したことはやってないですが最終的には実現できたのでメモとして残します。

Tl;dr

  1. まずはappend-template.md というファイルを作成し、そこに追加したい定型文を書いておきます。
  2. その状態で以下のコマンドを叩きます。
gh issue view {ISSUE_NO} --json body --jq .body > tmp1.md && cat tmp1.md append-template.md > tmp2.md && gh issue edit {ISSUE_NO} --body-file tmp2.md

{ISSUE_NO} の部分は追加したいissueの番号に置き換えてください。

詳細

なんのことはない単純なワンライナーですが、サクッと解説します。このコマンドは3つの区画に分かれてます。

本文の抽出

以下コマンドで、該当issueの本文を抽出しています。最初はtmpファイル等を使わずにそのままappendしようと思ってたのですが、issueにセットした本文で改行がちゃんと認識されなかったりでハマったので、雑ですがファイルに書き出してやることにしました。

gh issue view {ISSUE_NO} --json body --jq .body > tmp1.md 

定型文の追加

以下コマンドで、定型文を追加しています。
append-template.md というファイルに書いてある定型文を素朴にcatでくっつけて別のtmpファイルに書き出しています。

cat tmp1.md append-template.md > tmp2.md 

本文の更新

以下コマンドで、元のissueの本文を更新しています。
--body-file オプションを使うと、ファイルから本文を読み込んでくれるので、先ほど作成したtmpファイルを指定しています。

gh issue edit {ISSUE_NO} --body-file tmp2.md

まとめ

以上です。これでチェックリストが追加されました。やったぜ

終了後にゴミが残るのはちょっといけてないですが、手動で消せばいいので消してください。
shell から呼べる感じにもできそうですが、そんなにしょっちゅう発生するタスクでもないのでこれでいいかなって感じです。

おわり

GitHubで編集を提案
CureApp テックブログ

Discussion