最近のmake help自動生成
Runnable documentationとしてのMakefileは最高なので、
make helpによる案内もリッチにしたい。
awkワンライナーでやることも多いけれど、最近作ったのはこれ。
code:make
### ヘルプを表示する
#
# 行頭が###で始まる行を説明行、記号以外で始まるターゲットをタスクとして
# コマンド一覧とヘルプメッセージを表示する
#
.PHONY: help
help:
@echo "usage: make <target>"
@echo
@echo "---- target list ----"
@cat Makefile \
| awk -F: '/^### /{desc=substr($$0,4)} /^a-zA-Z0-9_-+:/&&desc{printf "% 10s :%s\n",$$1,desc; desc=""}' 複数行のコメントが書けるし、
help実行結果が文字揃えがされていい感じに見える。
マーカーの ### が冗長すぎる場合は /^# にするのと、awkのsubstrをdesc=substr($$0,2)にすればOK
code:sh
$ make
usage: make <target>
---- target list ----
help : ヘルプを表示する
start : 開発環境を起動する
clean : 開発環境を初期化する
migrate : ミドルウェアのマイグレーションを実行する
status : 開発環境の状態を表示する