mise.tomlに定義したタスクの詳細を確認したい

【mise】mise runでタスクを定義して実行する で紹介したmise tasksは、タスク名とdescriptionだけを表示するシンプルな一覧である。タスクの数が増えてくると、定義元の設定ファイルや隠しタスクの有無、グローバルとプロジェクト固有の区別など、絞り込んで確認したくなる場合がある。mise tasks lsは一覧表示に特化したサブコマンドで、これらのオプションを備えている。mise tasksmise tasks lsのショートハンドであり、両者の結果は同じである。

基本的な一覧表示

mise.tomldescription付きのタスクを定義しておく。

[tasks.build]
description = "アプリをビルドする"
run = "echo building..."

[tasks.test]
description = "テストを実行する"
alias = "ut"
run = "echo testing..."

mise tasks lsを実行すると、タスク名とdescriptionの一覧が表示される。

$ mise tasks ls
build  アプリをビルドする
test   テストを実行する

エイリアスや定義元ファイルも表示する

--extended(-x)オプションを付けると、エイリアスや定義元の設定ファイルパスなど全カラムを表示する。

$ mise tasks ls --extended
build      ./mise.toml  アプリをビルドする
test   ut  ./mise.toml  テストを実行する

testタスクに設定したalias = "ut"が表示され、mise run utのようにエイリアスでも実行できることが分かる。エイリアス名がtasksなど他のmiseサブコマンドの組み込みエイリアスと衝突する場合、mise runを省略した短縮実行(mise <エイリアス名>)はそちらが優先されるため、mise runを付けた形で実行する。

隠しタスクを表示する

タスクにhide = trueを設定すると、通常のmise tasks lsには表示されなくなる。

[tasks.deploy]
description = "デプロイする"
hide = true
run = "echo deploying..."
$ mise tasks ls
build  アプリをビルドする
test   テストを実行する

--hiddenオプションを付けると、隠しタスクも含めて表示できる。

$ mise tasks ls --hidden
build   アプリをビルドする
deploy  デプロイする
test    テストを実行する

他のタスクからdependsで呼び出すだけで、単体で直接実行させたくない補助的なタスクをhide = trueにしておくと、一覧表示をシンプルに保てる。

グローバルタスクとプロジェクト固有タスクを絞り込む

~/.config/mise/config.tomlのようなグローバル設定ファイルにもタスクを定義できる。全プロジェクト共通で使うタスクをグローバル側に定義しておくと、プロジェクト固有のタスクと合わせて一覧に表示される。

$ mise tasks ls
build  アプリをビルドする
lint   全プロジェクト共通のlintタスク
test   テストを実行する

--global(-g)を付けるとグローバルタスクだけ、--local(-l)を付けるとプロジェクト固有のタスクだけに絞り込める。

$ mise tasks ls --global
lint  全プロジェクト共通のlintタスク

$ mise tasks ls --local
build  アプリをビルドする
test   テストを実行する

タスク名だけを出力する

--name-onlyオプションを付けると、説明やカラムなしでタスク名だけを1行ずつ出力する。

$ mise tasks ls --name-only
build
test

fzfのような絞り込みツールへパイプで渡し、選択したタスク名をmise runに渡すといった使い方に向いている。

JSON形式で出力する

--json(-J)オプションを付けると、タスクの詳細情報をJSON形式で出力する。namedescriptionに加えて、依存タスクを表すdependsや実行ディレクトリを表すdirなども含まれる。

$ mise tasks ls --json
[
  {
    "name": "build",
    "aliases": [],
    "description": "アプリをビルドする",
    "source": "/path/to/mise.toml",
    "depends": [],
    ...
  },
  ...
]

jqなどと組み合わせて、CIスクリプトから特定条件のタスクだけを抽出する用途に使える。

並び順を変える

既定ではタスク名の昇順で表示されるが、--sortオプションでnamealiasdescriptionsourceのいずれかのカラムを基準にソートできる。--sort-orderasc(昇順、既定)・desc(降順)を指定する。

$ mise tasks ls --sort description --sort-order desc
test   テストを実行する
build  アプリをビルドする

タスク数が多いプロジェクトで、定義元のファイルごとにまとめて見たい場合は--sort sourceが使える。