roswellで開発中プロジェクトを簡単にloadする
開発中のプロジェクトを簡単にloadできるようにするスクリプトを書きましたが、改訂の途中です。
- 2017/05/25 追記: roswellのサブコマンドになりました。詳細はroswellサブコマンドへの道参照
動機
ぼくはrosaやinquisitor等々ライブラリを改修するときにslimeからql:quickload
するため、~/roswell/local-projects/
にライブラリの.asd
ファイルにシンボリックリンクを張って開発をしています。どうもASDFはシンボリックリンクを辿ってくれるようなので、便利です。
ところで一方、roswellのリリースがあるたびに~/.roswell
を消すことにしています。理由はなんとなくです。そうすると、だいたい一ヶ月に一回くらい~/.roswell
を消していることになりますが、~/.roswell/local-projects
の中身も消えてしまうので、その度にシンボリックを張り直しています。
それってめんどくさい。
そして、それって自動化できるなと今日(ついに!)気付いたので、それを自動化してみました。
最初のアプローチ
……というようなことをシェルスクリプトで書いてみました。どうやっているかは中を覗いてみてください。
dotfiles/ros-local.sh at 747385a4e6900484eb2f583196dcf78cd846481c · t-sin/dotfiles · GitHub
Usageはこんなかんじ。
cat <<EOF localprj.sh COMMAND [PARAMS...] Maintain roswell local-prpjects. localprj.sh see in ROSWELL_DIR to search roswell's local projects. Also it see in CODE_DIR to search local codes. COMMANDS: show show present configuration. local list asd files in local-projects. list list available asd files in code directory. put ASD_NAME make symbolic link from ASD_FILE into roswell local-projects. del ASD_NAME unlink ASD_FILE from roswell local-projects. EOF
S式への道
仕事中になにやっとんねんという感じですがお昼休みなのでだいじょうぶです。もしかしたら車輪を再発明したかもしれないのでツイートしてみたところ、roswell作者の佐野さんからご意見が。
@sin_clav 便利そう。symlinkがそこそこ使いにくいosもあるので、ros scriptで書きませんか?asdf:load-asdを呼ぶlispのソースを(ql:qmerge "local-init/")以下に生成するのでほぼ等価だと思うのでどうでしょうか?
— Masatoshi SANO (@snmsts) 2017年5月24日
ql:qmerge
とかasdf:load-asd
とかあるんですね。初めて知りました。というわけで、roswellスクリプトとして書きなおしてみました。シェルスクリプト版が存在したのは正味一時間程度でした。
さようなら、ros-local.sh
。
ありがとう、ros-local.sh
。
そして、
_人人人人人人人人人人人人人人_ > ようこそ! Common Lisp! <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
dotfiles/ros-tap.ros at 751b5298fed6f1482731d6c81b70c24335184489 · t-sin/dotfiles · GitHub
え、しごと? ちょっとストレスが溜まってたし、忙しくなかったからゆるして……。
roswellサブコマンドへの道(追記)
この記事を公開後、佐野さんからこのようなご意見をいただきました。
@sin_clav 本体に取り込まなくても、けっこう場当たり的に拡張できるようにしたので、密な結合が必要そうな物以外は本体に取り込むのをためらいます。 https://t.co/9JrdFFLjUZ
— Masatoshi SANO (@snmsts) 2017年5月24日
なんと、roswellのサブコマンドは自前で追加が可能だったんだよ!!
な、なんだってー!
というわけで、プロジェクトに切り出しました。ライブラリ開発してるとけっこう便利そうなので使ってみてください。プルリクやご意見大募集中です。
おわりに
eval
必要かしらん- 出力ファイルが大文字なの、カッコわるい気がする
roswellにぷるぷるリクエストを出して、rosコマンドに入れてもらうのアリでは?- roswell入れてもらわなくても拡張可能でした