mise.tomlの値をスクリプトから取得したい

mise.tomlの特定の値をシェルスクリプトから取得したい場合、catしてgrepawkで抜き出すのは手間である。mise config getは、mise.tomlの任意のキーの値をドット区切りのパスで取得するコマンドである。【mise】mise setでmise.tomlに環境変数を設定する[env]専用なのに対し、mise config getmise.tomlのどのセクションのキーでも取得できる。

mise config getの基本

ドット区切りでキーのパスを指定する。

[tools]
jq = "1.7.1"
node = "22"

[env]
NODE_ENV = "development"
$ mise config get tools.jq
1.7.1

$ mise config get env.NODE_ENV
development

キーを省略すると、対象の設定ファイル全体をTOMLのまま表示する。

$ mise config get
[tools]
jq = "1.7.1"
node = "22"

[env]
NODE_ENV = "development"

テーブル単位で取得するとTOMLフラグメントが返る

値ではなくテーブルを指定すると、そのテーブル配下がTOML形式のまま返る。

$ mise config get tools
jq = "1.7.1"
node = "22"

存在しないキーを指定するとエラーになり、終了コードは1になる。

$ mise config get tools.nonexistent
mise ERROR Key not found: tools.nonexistent in /path/to/project/mise.toml

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

デフォルトではカレントディレクトリから最も近いmise.tomlが対象になる。-g(--global)を付けるとグローバル設定(~/.config/mise/config.toml)を、-f(--file)を付けると指定したファイルまたはディレクトリ内の設定ファイルを対象にできる。--systemを付けるとシステム全体の設定ファイルを対象にできる。

$ mise config get tools.ripgrep -g
latest

$ mise config get tools.jq -f ./another-project
1.6

toml getという別名でも呼び出せる

configコマンドにはtomlという別名があり、mise config getmise toml getは同じ意味である。ヘルプのExamplesもmise toml getの形で書かれている。

$ mise toml get tools.jq
1.7.1