2020-05-18
5/18
clenvは2つのプロジェクトに分割した方がいいかもしれない
https://github.com/progrhyme/clenv
拙作のシェル環境管理ツールだが、やりたいことと実現方法がマッチしてないかも? OR やりたいことが曖昧かも? という気がしてきた。
主なユースケース:
- 実行ファイルをPATHの通ったところに置きたい
- シェルスクリプトモジュールを管理したい。任意のスクリプトから好きなときに呼び出して使ったり、自分のシェル環境で読み込んで使いたい
備考:
- 1 はシェルスクリプトだけでなく、バイナリ形式で配布されているものも取得できた方が便利。参考: https://github.com/Songmu/ghg
- シェルスクリプトの中には単独で完結してなくて、リポジトリに同梱しているシェルスクリプトに依存しているものもあるので、そういうのは上手くやらないといけない。これはclenvで既に達成している(はず)
現状の(構想の)問題点:
- 1 をやるにしろ、2 をやるにしろ、モジュールのバージョン管理はtoo muchである
- 環境を分けて管理する機能も要らない。自分でも
default
しか使ってないし
参考:
新プロジェクト構想
①実行ファイル取って来る君
仮称「binpack」とする。
- ghgとclamの機能を混ぜる
- clenvみたいに複数環境は要らなくて、最低限、実行ファイルを所定のパスに展開できればいい
- シェルスクリプトで書く必要なし。配布が面倒なのは嫌なので1バイナリにできて書きやすいGoかRustで、GitHubのライブラリがあるといいな
Issues:
- 実行ファイル名が衝突したらどうするか?
②シェルスクリプトのモジュール管理
仮称「shellter」とする。
- clenvみたいに
lib/
にsymlink貼る必要なし。modules/$module
とかに展開したら、所定のルールで読み込めればいい - cllibみたいに動的にロードするシェル関数もあるといい
load $module
とやったら、$module
で所定のパスにあるスクリプトが読めればいいだろう
既にやられていたかも
RustのGitHubライブラリ探してたら、丁度作ろうとしていたものを見つけたかも?
これでいいんじゃないか?
……うーん、実行ファイルを含むパッケージの場合、各ディレクトリごとにPATHに入れることはできるようだが、まとめて $SHLDON_ROOT/bin/
とかに入れれるかわからん。
どっちかというと、シェルプラグイン管理に重きを置かれている印象。
少し拡張すればできそうだけど。
追記: COMPLETION対応
実行ファイルとセットでcompletionファイルをロードするようにしたいこともある。
そういう場合はやっぱりclenvやbasherみたいにセットで管理できた方が便利かな。
clenvはbasherで完全に置き換えられそう
https://github.com/basherpm/basher
ライブラリのロードが include user/repo lib/file.sh
みたいにして行けるので、一昨日作った gcloud-prompt だったら、 include progrhyme/gcloud-prompt gcloud-prompt.sh
で行ける。簡単。
どうもパッケージの bin/
以下に置いたものが自動でデフォルトだと $HOME/.basher/celler/bin/
に展開されるっぽい。symlinkかもしれんが。
最終更新 2020-06-09: [memo/2020] Archive 2020051{8,9}.md (ca203b0a1)