タスクを追加するたびにmise.tomlを手で編集するのが面倒
【mise】mise runでタスクを定義して実行する
でタスクを実行できるが、新しいタスクを追加するたびにmise.tomlの[tasks.*]セクションをTOMLの文法通り手で書くのは手間である。mise tasks addは、コマンドラインからタスクを追加できるコマンドである。
mise tasks addの基本
タスク名と、--区切りで実行するコマンドを指定する。
$ mise tasks add test -- echo running tests
[tasks.test]
run = "echo running tests"
mise.tomlの[tasks.*]セクションに追記される。mise.local.tomlのような未追跡の設定ファイルが存在していても、mise tasks addはコミット対象のmise.tomlに書き込む。
オプションでタスクの属性を指定する
--descriptionで説明文、--dependsで依存タスクを指定できる。
$ mise tasks add build --description "Build the project" --depends test -- echo building
[tasks.build]
depends = ["test"]
description = "Build the project"
run = "echo building"
--aliasで別名、--hideでmise tasks lsの一覧から除外できる。非表示にしたタスクも、タスク名やエイリアスを直接指定すればmise runで実行できる。
$ mise tasks add check --alias c --hide -- echo checking
$ mise tasks ls
build Build the project
test
$ mise run c
[check] $ echo checking
checking
--sources/--outputsを指定すると、ソースファイルが出力ファイルより新しい場合だけ実行するキャッシュ判定を設定できる。
$ mise tasks add compile --sources 'src/**/*.c' --outputs 'build/*.o' -- echo compiling
-fでファイルタスクとして追加する
-f(--file)を付けると、mise.tomlへの追記ではなく、実行可能なシェルスクリプトとしてmise-tasks/ディレクトリにタスクを作成する。
$ mise tasks add deploy -f -- echo deploying
$ cat mise-tasks/deploy
#!/usr/bin/env bash
set -euxo pipefail
echo deploying
生成されたファイルには実行権限が付与済みで、mise run deployでそのまま実行できる。複数行にまたがる複雑な処理を書きたい場合は、TOML内のrunよりファイルタスクの方が扱いやすい。
既存のタスク名を指定すると上書きされる
mise tasks addに既存のタスク名を指定すると、確認なしでそのタスクの定義が上書きされる。
$ mise tasks add test -- echo changed
[tasks.test]
run = "echo changed"
誤って別のタスクを同名で追加すると、既存の定義が気づかないまま置き換わる点に注意する。
\第一線のプログラマーの行動原理を学べる!/
