はじめに
asdfとは
asdf-vmというツールがある。このツールはjenvやrbenvなどのいわゆる**env系のツールを同じインターフェースで使えるツールでRubyやPythonのような言語処理系はもちろんneovimなどのツールなども扱うことができる。
このように多種多様なツールが使えるのはプラグインを使ってユーザが自由に拡張できるからであってコミュニティがどんどんプラグインを作成してくれるから*1である。
たくさんのプラグインがあり、それらが統一的に扱えてさらには最新のソフトウェアを入れやすい*2のでUbuntu/Debianのaptのように使っている。
ちなみに存在しているプラグインは次のリポジトリにまとめられている。
プラグインを作る理由
僕もRyeというPythonのパッケージマネージャをasdf経由でインストールしたくなったのでプラグインを作成することにした。
asdf Plugin作成 getting started
テンプレートから実体を作る
まずはドキュメントを読む。読むとプラグインを作成する人向けの情報が出てくるので見る。
読むと分かるがリポジトリテンプレートからリポジトリを作成して同梱のシェルスクリプトを実行すれば良いらしい。
実行すると95%くらい完成したコードが出来る。
ちょっと修正する
セットアップスクリプトを実行して95%くらい完成したコードが出来たのであと5%を作成する。
今回の例ではダウンロードするファイル名を調整してダウンロードしたファイルを所定の場所に移動するためのスクリプトを書いた。 詳細を知りたい人は実装PRのリンクを貼るので見て欲しい。
PR送ったよ
せっかくプラグインを作成したので他のユーザにも使ってもらいたい。asdfでは自作プラグインを他の人にも簡単に使ってもらう方法がある。
それが中央集権的に管理されたリポジトリ*3にプラグインの存在する場所を登録するという方法である。
ということでPRを送った。これがマージされれば asdf plugin add rye && asdf install rye latest
でRyeを入れることができる。
2023/6/1追記
無事マージされました。 次の手順を取ればインストールできます。
asdf plugin add rye asdf install rye latest asdf global rye latest
追記ここまで
感想
テンプレートを元にセットアップを進めていくとコードの雛形やライセンス、CI Workflowの定義ファイルまで勝手に整備されていくので簡単にプラグインを作成することができた。
ぜひプラグインを作ってみてください。