mise.tomlの空白がバラバラになる

複数人でmise.tomlを編集していると、=の前後のスペースの数や空行の入れ方が人によってバラバラになりがちである。mise fmtを使うと、mise.tomlの空白を統一した形式に整形できる。

mise fmtの基本

[tools]
node    =    "22"
jq="1.7.1"
$ mise fmt
[tools]
node = "22"
jq = "1.7.1"

=の前後の余分なスペースが1つに統一される。

キーの並び順はソートされない

mise fmt --helpには「Sorts keys and cleans up whitespace in mise.toml」と説明されているが、実際にキーをアルファベット順とは異なる順序で書いても、整形後も元の記述順のまま変わらない。

[tools]
zsh_tool="1.0"
jq="1.7.1"
node="22"
aaa_tool="1.0"
$ mise fmt
[tools]
zsh_tool = "1.0"
jq = "1.7.1"
node = "22"
aaa_tool = "1.0"

aaa_toolが先頭に来ることはなく、zsh_tooljqnodeaaa_toolという元の順序のまま整形される。ヘルプの説明とは裏腹に、キーの並び替えは行われない。

–checkでCIの整形チェックに使う

--checkを付けると、ファイルを書き換えずに整形済みかどうかだけを判定する。整形が必要な場合は終了ステータス1でエラーになる。

$ mise fmt --check
mise ERROR Following config files are not properly formatted:
/path/to/project/mise.toml

整形済みの場合は何も出力せず終了ステータス0になる。CIでmise.tomlの整形忘れを検知したい場合に使える。

–stdinで標準入力を整形する

--stdinを付けると、標準入力に渡した内容を整形し、結果を標準出力に書き出す。ファイルへの書き込みは行わない。

$ echo 'jq    =    "1.7.1"' | mise fmt --stdin
jq = "1.7.1"

–allは子ディレクトリではなく階層的な設定ファイルすべてが対象

--all(Format all files from the current directory)は、カレントディレクトリ配下のファイルを再帰的に整形するという意味ではない。カレントディレクトリで有効な、階層的にマージされる設定ファイルすべて(グローバル設定ファイルも含む)をまとめて整形する、という意味である。

project/mise.toml (プロジェクト設定)
~/.config/mise/config.toml (グローバル設定)

--allを付けずにmise fmtを実行すると、カレントディレクトリのmise.tomlだけが整形され、グローバル設定ファイルは変更されない。--allを付けると、この2つの設定ファイルが両方とも整形される。

$ mise fmt --all

一方、project/sub/mise.tomlのようなサブディレクトリの設定ファイルは、--allを付けてもプロジェクトルートから実行した場合は対象にならない。整形したい場合は、そのサブディレクトリに移動してからmise fmtを実行する。