LoginSignup
3
5

More than 5 years have passed since last update.

Automator で pull request メッセージ作成のサービスを作る

Posted at

問題

GitHub PR message

社内で GitHub の issues より Backlog を使うため、Backlog チケットと GitHub の PR はほとんど 1:1 関係になってますから、普段 PR を開ける時、こういう形で Backlog へのリンクを書きます:

Backlog: [チケット番号](チケットのリンク) Backlog のチケットのタイトル

毎回いちいちチケットのリンクとタイトルをコピーするのがややこしかったですから、サービスを作りました。

スクリプト

まずは CLI から PR メッセージを作成できるようにしました。

pr_message.sh
#!/usr/bin/env bash

API_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

function usage(){
  echo "Usage: $0 <issue_id>" 1>&2
  exit 1
}

function unknown_issue(){
  echo "Unknown issue: $1" 1>&2
  exit 2
}

issue_id=$1
[ -z ${issue_id} ] && usage

issue_summary=$(curl -s https://company.backlog.jp/api/v2/issues/${issue_id}?apiKey=${API_KEY} | jq -r '.summary')
if [[ ${issue_summary} = null ]]; then
  unknown_issue ${issue_id}
fi

issue_url=https://company.backlog.jp/view/${issue_id}

echo "Backlog: [${issue_id}](${issue_url}) ${issue_summary}"

API_KEY は Backlog で生成された API キーです。
Backlog のチケット ID をパラメータとして読んで、 API を使ってこのチケットの情報を取得して、jq で情報から summary を読みます。
チケットの URL は決まってますから、 ID だけ置き換えたら十分です。
最終的に PR メッセージを出します。

どこからも実行ができるため、ファイルに許可を与えて bin にコピーしました:

chmod 755 pr_message.sh
mv pr_message.sh /usr/local/bin/pr_message

実行してみれば、メッセージがちゃんと作られています:

$ pr_message C-1234
Backlog: [C-1234](https://company.backlog.jp/view/C-1234) Backlog チケットのタイトル

Automator でサービスを作る

Automator で新しいサービスを選択します。

automator_new_service.png

左側の ライブラリ メニューから テキスト を選択して、 テキストの入力を求める を右側にドロップします。

Ask for text

左側から ユーティリティ > シェルスクリプトを実行 をこの下にドロップして、入力の引き渡し方法を 引数として にする。ここで、前のステップでもらった入力をスクリプトに渡します。

注意: この shell は .bash_profile などを読まないため、自分で PATH を設定する必要あります。

Shell script

出力をクリップボードにするため ユーティリティ > クリップボードにコピー を下に追加します。

Copy to clipboard

ライブラリ/サービス フォルダーの中に保存して再起動します。

実行

サービスはトップメニューから実行されます。

Services menu

実行すれば、ダイアログが開けます。

Dialog

入力・確認したら、後は ⌘V だけで終わります。

PR message

結論

Automator とサービスでできることはいくつでもあって、よく行う作業をかなりやりやすくできます。今回のサービスの改善として、メッセージをクリップボードにコピーするより、ブラウザーの中のコピーにした方が使いやすくなります。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5