mise.tomlの任意のキーをコマンドラインから書き換えたい

【mise】mise config getでmise.tomlの値を取得する の対になるコマンドがmise config setである。mise.tomlの任意のキーに、ドット区切りのパスを指定して値を書き込める。

mise config setの基本

キーと値をスペース区切りで指定する。KEY=VALUEの形式でもよい。

$ mise config set tools.python 3.12
$ mise config set env.TEST_ENV_VAR=ABC
[tools]
python = "3.12"

[env]
TEST_ENV_VAR = "ABC"

値の型は自動的に推論される

true/falseはbool、カンマ区切りの文字列はリストとして書き込まれる。

$ mise config set settings.always_keep_download true
$ mise config set settings.disable_tools node,rust
[settings]
always_keep_download = true
disable_tools = ["node", "rust"]

–appendと–removeでリストを操作する

--appendを付けると、既存のリストに値を追加する。同じ値が既にあれば重複追加しない。

$ mise config set --append env._.path ~/.local/bin
$ mise config set --append env._.path ~/.local/bin
[env._]
path = ["/home/user/.local/bin"]

2回目の--appendを実行しても、リストの中身は1件のままである。--removeを付けると、リストから該当の値だけを取り除ける。

$ mise config set --remove env._.path ~/.local/bin

–typeで型を明示指定できるが不整合には注意する

-t(--type)を付けると、自動推論を使わず型を明示できる(infer/string/integer/float/bool/list/set)。ただし、miseが意味を認識している[settings]配下のキーに対して実際の型と異なる--typeを指定すると、書き込み自体がエラーになり、ファイルの内容は変更されない。

$ mise config set settings.jobs 4 --type string
mise::config::parse_error

  × Invalid TOML in config file
    ╭─[/path/to/project/mise.toml:10:8]
 10jobs = "4"
    ·        ─┬─
    ·         ╰── invalid type: string "4", expected usize
    ╰────

settings.jobsは数値を期待するキーだが、--type stringを強制すると、mise自身が想定する型と食い違い書き込み前に弾かれる。終了コードも1になり、mise.tomljobsの行は追加されない。--typeを使う場合は、対象のキーが実際にどの型を期待するか事前に確認する。

mise.local.tomlが存在すると書き込み先が変わる

【mise】mise tasks addでmise.tomlにタスクを追加するmise.local.tomlの有無にかかわらず常にmise.tomlへ書き込むが、mise config setmise.local.tomlが存在する場合、mise.local.tomlへ書き込む。

$ echo '[tools]' > mise.local.toml
$ mise config set tools.ruby 3.3
# mise.local.toml
[tools]
ruby = "3.3"

mise.local.tomlを削除した状態でmise config setを実行すると、通常通りmise.tomlに書き込まれる。コマンドによって書き込み先の優先順位が異なる点に注意する。

-gと–systemで対象の設定ファイルを切り替える

-g(--global)を付けるとグローバル設定(~/.config/mise/config.toml)に、--systemを付けるとシステム全体の設定ファイルに書き込める。-f(--file)を使うと、任意のファイル・ディレクトリを指定できる。

$ mise config set tools.ripgrep latest -g