cargo make で contains multiple actions のエラーに遭遇
ブログさぼりがちなので、リハビリがてら軽いやつから書いていきます。
いまさらながら cargo make はじめました。
(一応) 自分でメンテしている echonet-lite-rs のテストを cargo make で作ってみるかー、と考えたのが始まりです。
contains multiple actions
Makefile.toml
に次のようなタスクを定義して、実行したところ、contains multiple actions
のエラーに遭遇しました。
[tasks.test] description = "test mra-reader" script = "cargo run data/MRA_V1.1.1/mraData/devices/0x0287.json" dependencies = ["fetch-test-data", "build"]
$ cargo make test [cargo-make] INFO - cargo make 0.36.3 [cargo-make] INFO - Project: mra-reader [cargo-make] INFO - Build File: Makefile.toml [cargo-make] INFO - Task: test [cargo-make] INFO - Profile: development [cargo-make] INFO - Running Task: legacy-migration [cargo-make] INFO - Skipping Task: fetch-test-data [cargo-make] INFO - Execute Command: "cargo" "build" Finished dev [unoptimized + debuginfo] target(s) in 0.01s [cargo-make] INFO - Running Task: test [cargo-make] ERROR - Invalid task: test, contains multiple actions.
cargo make にはビルトインのタスクがあって、test
もその1つのようです。
https://github.com/sagiegurari/cargo-make#disabling-predefined-tasksflows
今回の私がやったように、ビルトインタスクを自分で定義すると、置き換えではなく、拡張という扱いになるようです。
このようなビルトインタスクは --list-all-steps
するとずらずらとたくさん出てきます。
test
もありますね。
$ cargo make --list-all-steps Build ---------- build - build MRA reader binary build-flow - Full sanity testing flow. # 中略 Test ---------- bench - Runs all available bench files. bench-compile - Compiles all available bench files. # 中略 pre-test - No Description. test - Runs all available tests.
解決方法
toml ファイルに次のように書くことでビルトインタスクをロードしないようにできます。
[config] skip_core_tasks = true
またはタスク名をビルトインタスクとかぶらないようにすれば良いです。
[tasks.test-mra-parser] description = "test mra-reader" script = "cargo run data/MRA_V1.1.1/mraData/devices/0x0287.json" dependencies = ["fetch-test-data", "build"]
ビルトインタスクを眺めていると、よく使いそうなやつが多いのですが、多すぎる気もするので、どちらの方が使いやすそうか、試しながらやっていきたいですね。