最近、Github CLIの存在を知って使いこなそうと頑張っている。
その中のコマンドの1つとしてPRを作成するコマンド gh pr create
がある。
https://cli.github.com/manual/gh_pr_create
オプションの1つである --body
を使えば、PRのbodyもコマンドラインから渡せてしまう。
gh pr create --web --body "
### What
プルリクエストをコマンドラインから作成してみた
"
ただし、これをMakefileの中でやろうとすると以下のようなエラーになる。
# Makefile
create-pr:
gh pr create --web --body "
### What
プルリクエストをコマンドラインから作成してみた
"
# execute `make create-pr`
gh pr create --web --body "
/bin/sh: -c: line 0: unexpected EOF while looking for matching `"'
/bin/sh: -c: line 1: syntax error: unexpected end of file
make: *** [create-pr] Error 2
Makefileの中では1行1コマンドとして解釈されてしまうため、ダブルクオーテーションの終わりを探してくれない。
かといって、こうすると
# Makefile
create-pr:
gh pr create --web --body "\
### What\
\
プルリクエストをコマンドラインから作成してみた\
"
コマンド自体は実行できるが改行文字が含まれていないことになり、bodyが ###Whatプルリクエストをコマンドラインから作成してみた
になる。
よってこうする。
# Makefile
define PR_BODY
### What
プルリクエストをコマンドラインから作成してみた
endef
export PR_BODY
.PHONY: cloud-gov/prd/main/upd-apl-status
create-pr:
gh pr create --web --body "$${PR_BODY}"
環境変数としてexportすることで、Makefileの中で改行文字を扱えるようになる。