LoginSignup
7
2

More than 3 years have passed since last update.

cargo-makeをrust以外で利用するときの便利tips

Posted at

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を必ず指定しなければなりません。
これは面倒なので以下のようにmakerscargo-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", "${@}"]
7
2
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
7
2