Help us understand the problem. What is going on with this article?

GitHub CLI 完全に理解した

やぬてつです。

この記事は 完全に理解したTalk Advent Calendar 2020 の12日目の記事です。GitHub CLI を何に使ったら良いか迷っている方の一助になればと思い書きました。

みなさん GitHub CLI ご存知ですか?CLI好きにはたまらない機能ですよね。
でもですよ。正直言ってWebでもいいですよね。操作慣れてますし。
そんなことを考えていたら結局WebでIssueを大量作成するPM作業が日々続いていました。

私のプロジェクトでは一つの課題につき3つのIssueを作成しています。メインである課題、テストレビュー、テストの3つです。これをスプリントごと7課題〜10課題、つまり多い時で30Issue作成します。

1つの課題につき3つ作るだけでも面倒くさいし、定型文章も多いので、マウスによるコピペが大量に発生します。テンプレートを利用していてもめんどくさいです。これは自動化したいですね。

そこでCLIですよ。

早速使ってみる

今回はIssueを作成するコマンドを作成します。
Issueを作成するコマンドは以下です。

(///ᴗㆁ✿) < gh issue create

タイトルを追加します。

(///ᴗㆁ✿) < gh issue create --title "タイトル完全に理解した"

本文を追加します。

(///ᴗㆁ✿) < gh issue create --title "タイトル完全に理解した" --body "本文完全に理解した"

ラベルを追加します。

(///ᴗㆁ✿) < gh issue create --title "タイトル完全に理解した" --body "本文完全に理解した" --label complete

プロジェクトを追加します。

(///ᴗㆁ✿) < gh issue create --title "タイトル完全に理解した" --body "本文完全に理解した" --label complete --projects understand

マイルストーンを追加します。

(///ᴗㆁ✿) < gh issue create --title "タイトル完全に理解した" --body "本文完全に理解した" --label complete --projects understand --milestone asap

3種類を並べてみる

私のプロジェクトでは3つを同時に作成するので、タイトルと本文、タグを変更して作成します。
作成してまとめたものが以下になります。

(///ᴗㆁ✿) < gh issue create --title "タイトル完全に理解した" --body "本文完全に理解した" --label complete --projects understand --milestone asap

(///ᴗㆁ✿) < gh issue create --title "テストレビュー_タイトル完全に理解した" --body "テストレビュー完全に理解した" --label test_review --projects understand --milestone asap

(///ᴗㆁ✿) < gh issue create --title "テスト_タイトル完全に理解した" --body "テスト完全に理解した" --label test --projects understand --milestone asap

シェルスクリプトでいい感じにする

これを実行しただけではコピペがまだ必要な状態でミスが発生してしまいます。
シェルスクリプトでゴニョゴニョしていい感じにしましょう。
出来上がったのがこちら。

project=understand
milestone=asap

title=$1;
main_body=$2;

main_title="${main_body##*/}_${title}"
log=`gh issue create --title $main_title --body $main_body --label enhancement --project $project --milestone $milestone`

review_title="テストレビュー_${main_title}"
review_body="テストレビュー完全に理解した #${log##*/}" # メインIssue番号を取得
gh issue create --title $review_title --body $review_body --label test --project $project --milestone $milestone

test_title="テスト_${main_title}"
test_body="テスト完全に理解した #${log##*/}" # メインIssue番号を取得
gh issue create --title $test_title --body $test_body --label test --project $project --milestone $milestone

タイトルと簡単な本文だけで、定形文付きで3つのIssueを作成することができます。

(///ᴗㆁ✿) < zsh complete_unserstand_github_cli.sh "GitHub CLI 完全に理解したタイトル" "GitHub CLI 完全に理解した本文"

CLIの無限の可能性を感じますね。

大量のIssue作成にぜひ GitHub CLI を利用してみてください。

まとめ

GitHub CLI (issue create) の使い道完全に理解した!

easy_easy
Easy Easy はエンジニアリングを愛する全ての人の為のコミュニティです! 「みんな知っていることが前提になっている技術」を軸に、再度基礎を学ぶことをしていきましょう!
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away