レジストリに無いツールをasdf互換プラグインで使いたい

miseはツールごとにコアやaquaなど複数のバックエンドを内蔵しており、mise useでツール名を指定すると、レジストリに登録された優先順位に従って自動的にバックエンドが選ばれる。ただしセキュリティ上の懸念から 、レジストリへの新規ツール登録ではasdfやvfoxのバックエンドは受け付けられなくなっており、新規に対応させたいツールはaquaバックエンドへの登録が推奨されている。レジストリに登録されていないツールをどうしても使いたい場合は、mise pluginsでasdf互換の外部プラグインを自分で追加して管理する。

mise plugins installの基本

gitのURLを指定して、ワークフローエンジンdigdagのasdf-digdag プラグインをインストールする。

$ mise plugins install digdag https://github.com/jtakakura/asdf-digdag.git
mise plugin:digdag   clone https://github.com/jtakakura/asdf-digdag.git
mise plugin:digdag ✓ https://github.com/jtakakura/asdf-digdag.git#3fd2de8

指定したGitリポジトリがcloneされ、プラグインとして登録される。

プラグイン名でバージョンを指定して使う

digdagはmiseのレジストリに登録されていないため、mise use digdag@latestのようにプラグイン名をそのまま指定するだけで、インストールした外部プラグインが使われる。

$ mise use digdag@latest -y
mise digdag@0.10.5.1 [1/3] install
mise digdag@0.10.5.1 [1/3] bin/install
...
mise digdag@0.10.5.1 ✓ installed
mise /work/project/mise.toml tools: digdag@0.10.5.1

mise.tomlにも通常のツールと同じ形式で記録される。

[tools]
digdag = "latest"

レジストリに同名のツールが別のバックエンドで登録されている場合は、asdf:digdagのようにasdf:プレフィックスを付けてバックエンドを明示できる。ただし前述の通り、新規ツールはasdf/vfoxバックエンドでレジストリに登録されなくなっているため、今後こうした使い分けが必要になる場面は減っていくと考えられる。

インストール済みプラグインを確認する

mise plugins lsで、インストール済みの外部プラグインを一覧できる。

$ mise plugins ls
digdag

--urlsを付けると、プラグインが参照しているGitリポジトリのURLも合わせて表示される。

$ mise plugins ls --urls
digdag  https://github.com/jtakakura/asdf-digdag.git  HEAD 3fd2de8

nodeやgoのようなコアバックエンドのツールは、既定では一覧に表示されない。コアバックエンドのツールも含めて確認したい場合は--coreを付ける。

プラグインを更新・削除する

プラグインのGitリポジトリを最新の状態に更新するにはmise plugins updateを使う。

$ mise plugins update digdag
mise plugin:digdag   update git repo
mise plugin:digdag ✓ https://github.com/jtakakura/asdf-digdag.git#3fd2de8

不要になったプラグインはmise plugins uninstallで削除する。

$ mise plugins uninstall digdag
mise plugin:digdag   uninstall
mise plugin:digdag   remove ~/.local/share/mise/plugins/digdag
mise plugin:digdag ✓ uninstalled