HTTPS SSH

dresser - CLI shell launcher utility with environ -

これは何だろう?

任意の環境変数を設定した新しいコマンドシェルを起動するユーティリティツールです.

利点?

  • 「あ、環境かえたい」って思ったときに環境変数を切り替えられます
  • 環境変数を変えるだけなので、別のシェルとかには全く影響ないです
  • exit で終われる

欠点

  • 自動切り替えとか無理です
  • ツール自体のプロセスからサブプロセスとしてシェルを起動するので、いっぱい使うとえらいことになります

類似品?

pik (Windows用Ruby切り替え器)

  • 複数Ruby入れてる人向け
  • いまいち使い勝手悪かった (個人の感想です)
  • これを見て、「そうだ、作ろう」って思った

virtualenv (Pythonのあれ)

  • Pythonのバージョンを変えるあれ
  • 使われ方がBundlerっぽい気がする
  • 毎度Activateするのがちょっと

使うPython切り替えるだけなら py -2 やら py -3 とかできるので、ますます Bundler みたいに環境隔離目的っぽい気がする

インストール方法

とりあえず go get してあげてください

バイナリの準備はちょい待って

dresser本体

go get bitbucket.org/chiku2gonzalez/dresser/cmd/dresser

dressupユーティリティ

$ dresser dressup と入力するのがつらい方向け

go get bitbucket.org/chiku2gonzalez/dresser/cmd/dressup

基本的な使い方

dresser setup
dresser design --editor=vim <名前>
dresser dressup <名前>

コマンドリスト

dresser design [-mockup][-editor=<editor>] <dress-name>
dresser dressup [-shell=<shell>] <dress-name>
dresser list [-all]
dresser scrap [-backup=<filename>][-retain] <dress-name>
dresser setup
dresser show [-yaml] <dress-name>
dresser version
dressup [-shell=<shell>] <dress-name>

自動で設定される変数について

dresser dressup コマンドで切り替える際に、以下の_DRESSER で始まる環境変数が自動で定義されます.

変数名 備考
_DRESSER_DRESS 今着ている衣装名.
_DRESSER_LEVEL 重ね着回数.
_DRESSER_SHVAR_~ シェルのオリジナル変数保存用. shells で変数置き換えした場合.

実行時に見る環境変数

以下の環境変数を認識しますよ

  • DRESSER で始まる環境変数は dresser コマンドのみが読み込みます.
  • 同様に DRESSUP で始まる環境変数は dressup コマンドのみが読み込みます.
変数名 値とか 説明
DRESSER_LOGLEVEL, DRESSUP_LOGLEVEL debug, info, warning, error, panic のいずれか ログレベル設定. デフォルトは error.
DRESSER_DEBUG, DRESSUP_DEBUG 空ではない場合に認識します デバッグモード. ログレベルが強制的に debug になります
LOGLEVEL debug, info, warning, error, panic のいずれか 各プログラム用 LOGLEVEL がなかった場合用
DEBUG 空ではない場合に認識します 各プログラム用 DEBUG がなかった場合用

設定ファイル構成

諸注意

どこに書こうか迷ったがここで.

dresser design コマンドの実装は

  1. 一時ファイルに吐き出す (Marshal)
  2. エディタ起動
  3. 一時ファイルを読み込み、設定ファイルを吐く (UnmarshalMarshal)

という手順を踏むので、以下の点に注意っていう。

  • 設定ファイルが上書きされた場合、コメントは消し飛ぶ( ゚д゚)
  • 編集中に書き込んだコメントも消し飛ぶ
  • むしろ設定ファイル中で認識できないパラメータも消し飛ぶ
    • 保存してないので

Windowsの場合

場所 形式 説明
%USERPROFILE%/dresser.yml.config YAMLファイル 基本設定ファイル. これさえあれば動くはず.

Windows以外の場合

場所 形式 説明
$HOME/.dresser.yml.config YAMLファイル 基本設定ファイル. これさえあれば動くはず.

設定ファイルサンプル

長くなったのでリポジトリに入れておきました

備忘録
  • 日本語はUnicodeエスケープされるぽい (goyamlの仕様かも)
  • 環境変数は以下の説明を参照

環境変数の扱いについて

OS 形式 備考
Windows %変数% Windows形式の環境変数のみ. プロンプト文字列を展開することを考えると、os.ExpandEnv を使えなかった;つД`)
Windows以外 $変数 または ${変数} os.ExpandEnv に依存してます('ω')

'$' をエスケープする手段があれば、Windowsでも $変数 形式使えるようにできるんだけどなー

作者について

TANAKA Kenichi aka chikuchikugonzalez (ちくちく('ω')ごんざれす)

連絡先等

mailto:chikuchikugonzalez@gmail.com

Twitter

ちくちく('ω')ごんざれす on Twitter

日記

chikuchikugonzalezの雑記帳

ライセンスとか

MIT License

過去の歴史

  • rbcmd
    • 確か最初、Rubyのパスを切り替えるツールを バッチファイル で作ったんだ
    • 無駄に pik っぽく、Rubyの実行ファイルを渡すと勝手にバージョン判別してた
  • rbcom
    • なぜか C# で書き直した
    • でも気が付いた. 環境変数切り替えるツールでよくね? って
    • Rubyだけじゃなくていいよねっていう意味で
  • cosplay
    • C# で作り直した.
    • 結構個人的に活躍してる.
    • cosplay っていう響きもいいよねってけっこう気に入ってた
    • でも、仕事的な意味でGo言語やるよー、ってなってそれに合わせて再実装とかしてたりする
  • さらにリファクタ版あったけど、それに嫌気がさしたのでさらにリファクタしたのがコレ

Windowsバッチファイル => C# => Go言語 って感じで迷走してますね


簡単にはできない操作のやり方について

要らなくなった設定を消す方法

設定ファイルから該当する部分を消せばいなくなります. …というのをするための dresser scrap サブコマンド作りました.

そうじゃない、一時的に無効にしたい

できなくなりました(/・ω・)/ …と思ったけど、dresser scrap -retain でできるようにしました.

衣装定義的には

- name: ""
  trashed: True
  

でできますね.

その他備考

シェル環境変数が効かないんだけど

自分でぶち当たったんだけど、bashでログインシェルになるようにしておくとこのツールで上書きした変数がさらにrcファイルで上書きされたりするんですね

例:PS1

プロンプト変わらなくて困ったもんだ

PowerShellなのにコマンドプロンプトが起動したんだけど

基本的に %COMSPEC% を見ているので、これが変わらない限りたぶんコマンドプロンプトが起動することになりますね. 一応Windowsでも %SHELL% があればそれを見るようにしてますが.

なので、誰か、今自分がPowerShellで動いているかを判別する方法教えてください

他のツール見る限り .bat と .ps1 を用意するしかない気がするんだけどなー