Makefile で 動的にコマンドを変える方法
概要
使用できるコマンドかどうかチェックして、使用できない場合は別のコマンドを使用するみたいなことをやりたかったので
例えば、docker-compose
がインストールされている場合はそれを使用、それ以外の場合は docker compose
を使用みたいな感じ
実装
動的にコマンドを変更
DOCKER_COMPOSE := $(command -v docker-compose >/dev/null && echo docker-compose || echo docker compose)
up:
$(DOCKER_COMPOSE) up -d
down:
$(DOCKER_COMPOSE) down
command -v
でコマンドの存在をチェックし、存在すればそれを、存在しなければ別のコマンドをecho
:=
は即時評価。echo
されて変数に代入された結果を$(変数)
で使用
動的にオプションを設定
GitHub Actions で docker compose exec
する際に -T
オプションが必要みたいなときは以下で実現できる。
TTY_OPTION := $(echo $CI | grep -q true && echo "-T")
test:
$(DOCKER_COMPOSE) exec $(TTY_OPTION) app yarn lint
- GitHub Actions 実行時に設定される
$CI=true
をgrep
コマンドでチェックし、該当する場合に-T
をecho
auto height で transition

