カジュアルに環境変数を変えたcmdを動かすためにcosplayコマンド作った
ついカッとなって作った。リポジトリはこれ→ https://bitbucket.org/chiku2gonzalez/cosplay です。
使い方
PATHを通した後
C:\>closet add ruby200
C:\>closet edit --editor=gvim
C:\>cosplay ruby200
みたいにします。
"closet edit" コマンドですが、ただエディタ (デフォルトではnotepad) が起動します。
めんどくせぇ(#゚Д゚) って人は %USERPROFILE%\cosplay.configを直接編集してもいいです。*1
cosplay.configフォーマットについて
とりあえずサンプル
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <cosplay> <closet> <!-- 環境 (コス) とか。名前は name で。groupは未使用 --> <costume name="devkit47" group=""> <summary>Ruby Devkit (mingw32) 4.7.2</summary> <description>Ruby Devkit (mingw32 4.7.2)</description> <references /> <environments><!-- 環境変数定義 --> <variable name="PATH">%RI_DEVKIT%\bin</variable><!-- 一行一個で --> <variable name="PATH">%RI_DEVKIT%\mingw\bin</variable><!-- 複数あると ';' で連結される --> <variable name="RI_DEVKIT">P:\Ruby\DevKit-4.7.2</variable> </environments> </costume> <costume name="ruby200" group=""> <summary>Ruby 2.0.0</summary> <description>CRuby 2.0.0 (mingw32) 環境</description> <references /> <environments> <variable name="PATH">%RUBY_HOME%\bin</variable> <variable name="PATH">%RUBY_HOME%\sbin</variable> <variable name="RUBY_HOME">P:\Ruby\Ruby200</variable> </environments> </costume> <costume name="ruby200dev" group=""> <summary>Ruby 2.0.0 with DevKit</summary> <description>CRuby 2.0.0 (mingw32) 開発環境</description> <references> <inner>ruby200</inner><!-- 先に取り込む別環境名 --> <outer>devkit47</outer><!-- 後から取り込む別環境名 --> </references> <environments /> </costume> </closet> </cosplay>
注意点
closetコマンドの注意点
- "closet add" したときに自動でソートされる
- "closet edit" したときは編集してなくても cosplay.config が再保存される
くらいかな
cosplayコマンドの注意点
- 新しくサブプロセスとしてcmd.exeを起動してます
- cosplay自体がcmdの終了を待つので、何段も重ねるとcosplayぷろせすが増殖します\(^o^)/
- 起動するシェルは COMSPEC 環境変数に入ってるプログラム
- デフォルトは cmd.exe だよね?
- PowerShellにしたいときは COMSPEC=powershell してから使う
cosplay.configの注意点
- <references>~</references>で指定した環境からは<environments>~</environments>の環境しか取り込まれない。再帰的に追いかけたりしない
- <innter>と<outer>は複数可能っす
とういところかなー。
なんで作ったのって言われたら
- Ruby (mingw32 / mswin32混在) を切り替えたい
- Pikを試そう
- なぜか動かない(´・ω・`)
- よく考えたらバージョンだけじゃない (2.0.0のmingw32とmswin32を切り替えたかったりする)
- Pikでもできそうだったのでやってみる → できた(/・ω・)/ 動かなかったのはなんだったのか *2
- ふと気づく。RubyInstallerで入れたmingw32のために devkit も切り替えたいことに
- Ruby1.9 と Ruby2.0 で使う devkit が違う
- Pikじゃ無理\(^o^)/
- 作るか
- っていうかVisual Studioもあるじゃん(´・ω・`)
- あれこれ、環境変数差し換えられればよくね?
- コマンド作った ← イマココ
名前の由来は、別の環境という服を着て作業するから、っていうでっち上げ