⚡️
zigenvつくりました
what
いわゆる *env
(rbenvとかpyenvとかnodenvとか) のZiglang版をつくりました。
How to use
ほかの*envと同じです。
$ git clone https://github.com/kazto/zigenv.git ~/.zigenv
$ echo 'export PATH=${HOME}/.zigenv/bin:$PATH' >> .bashrc
$ echo 'eval "$(zigenv init -)"' >> .bashrc
$ exec bash --login -i
anyenv をお使いの方は、~/.anyenv/envs/zigenv にクローンしてください。anyenv install への対応はまだ行っていません。
How to create
今回、nodenvをほぼほぼそのまま使用しました。
以下のスクリプトを作成しました。
これを、以下のように実行します。
$ git clone https://github.com/nodenv/nodenv.git
$ git clone https://github.com/kazto/zigenv.git
$ cd zigenv && git switch -c bare-replaced origin/bare-replaced && cd ..
$ bash zigenv/script/nodenv2zigenv.sh
$ cd zigenv && git switch main && git rebase bare-replaced
$ git push origin HEAD
素のnodenv置き換えだけではうまくshimsを作れなかったりしたので、多少モンキーパッチをしています。
とくにzigのパッケージはパッケージルートに実行バイナリがあり、一方nodenvは/bin/ディレクトリの中しか実行バイナリを探しにいかないので、それをうまく見つけてあげるように変更しています。
また、zigenv-installスクリプトは、https://github.com/d2verb/zigenv/blob/master/execs/zigenv-install をもとに、やはりモンキーパッチをあてました。
https://ziglang.org/download/ をパースするところで、おそらくスクリプトが古いため現在のページをうまくパースできていませんでした。
こういうのって、ちゃんと謝辞とかREADMEに入れるべきでしょうかね。。。
README自体もnodenvのものを置き換えただけのものですので。。。
roundup
よければ使ってやってください。ちゃんとREADMEとかzigenv独自のものにする必要はあると思っています。
Discussion