cargo-makeはrust製のタスクランナーです。
makeより書きやすい(主観)形式のため非常に便利に複雑なタスクを作成できます。
基本cargoに組み合わせて使う想定ですが、バイナリ単体で配布されているため以下のように直接バイナリをインストールすればcargoがなくても利用できます。
curl -L -O https://github.com/sagiegurari/cargo-make/releases/download/0.31.0/cargo-make-v0.31.0-x86_64-unknown-linux-musl.zip \
&& unzip cargo-make-v0.31.0-x86_64-unknown-linux-musl.zip \
&& cp cargo-make-v0.31.0-x86_64-unknown-linux-musl/cargo-make /usr/local/bin/cargo-make
インストールの依存関係が無いため標準のタスクランナーとしてもおすすめです。
このようにrust意外で利用するときの便利なtipsをまとめました。
makersで利用可能にする
cargoでインストールするとmakers
コマンドで実行できますが、バイナリで入れた場合はcargo-make make
と引数make
を必ず指定しなければなりません。
これは面倒なので以下のようにmakers
でcargo-make make
を呼び出すようにすると便利です。
シェルのエイリアスでも良いですが、この方法だとDockerコンテナ内でもかんたんに使えるのでおすすめです。
echo '#!/bin/bash\ncargo-make make "$@"' > /usr/local/bin/makers && \
chmod +x /usr/local/bin/makers
デフォルトで用意されているタスクをすべて無効化する
cargo-make
はcargo用なのでrustプロジェクトでよく使うタスクがデフォルトで大量に用意されています。
ですがrust以外で使うときは必要ないのでまとめて消したくなります。
このような場合、以下の設定をMakefile.tomlに書くことで既存のタスクをすべて無効化でき、
自分で追加したものだけにできます。
[config]
skip_core_tasks = true
引数をdocker-composeを起動して実行する
以下のようなタスクを用意すると、 makers docker_run makers build
のようにdockerコンテナ内で引数のコマンドを実行できます。
手元に開発環境を入れたくない場合やコードジェネレーターなどdockerコンテナ内で実行したいが頻繁に実行するようなタスクを便利にできます。
[tasks.docker_run]
category = "develop"
description = "docker-composeでコマンドを実行します (e.g. makers docker_run makers build)"
command = "docker-compose"
args = ["exec", "app", "${@}"]