PythonのパッケージマネージャであるRyeをasdf経由でインストールできるようにプラグインを作った

はじめに

asdfとは

asdf-vm.com

asdf-vmというツールがある。このツールはjenvやrbenvなどのいわゆる**env系のツールを同じインターフェースで使えるツールでRubyPythonのような言語処理系はもちろんneovimなどのツールなども扱うことができる。

このように多種多様なツールが使えるのはプラグインを使ってユーザが自由に拡張できるからであってコミュニティがどんどんプラグインを作成してくれるから*1である。

たくさんのプラグインがあり、それらが統一的に扱えてさらには最新のソフトウェアを入れやすい*2のでUbuntu/Debianのaptのように使っている。

ちなみに存在しているプラグインは次のリポジトリにまとめられている。

github.com

プラグインを作る理由

僕もRyeというPythonのパッケージマネージャをasdf経由でインストールしたくなったのでプラグインを作成することにした。

rye-up.com

asdf Plugin作成 getting started

テンプレートから実体を作る

まずはドキュメントを読む。読むとプラグインを作成する人向けの情報が出てくるので見る。

asdf-vm.com

読むと分かるがリポジトリテンプレートからリポジトリを作成して同梱のシェルスクリプトを実行すれば良いらしい。

実行すると95%くらい完成したコードが出来る。

ちょっと修正する

セットアップスクリプトを実行して95%くらい完成したコードが出来たのであと5%を作成する。

今回の例ではダウンロードするファイル名を調整してダウンロードしたファイルを所定の場所に移動するためのスクリプトを書いた。 詳細を知りたい人は実装PRのリンクを貼るので見て欲しい。

github.com

PR送ったよ

github.com

せっかくプラグインを作成したので他のユーザにも使ってもらいたい。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の定義ファイルまで勝手に整備されていくので簡単にプラグインを作成することができた。

ぜひプラグインを作ってみてください。

*1:記事執筆時点でのプラグインの数は665個ある。

*2:取得元が大元のリポジトリのReleasesであることが多い

*3:このリポジトリが「はじめに」で登場したプラグイン一覧リポジトリである。