🕔

macOS で houdini_setup をそこそこ簡単に読み込ませる zsh の function 書いた

に公開

macOS で Houdini Launcher から Houdini Terminal を起動すると、 macOS 標準のターミナルが起動する。かなり以前からの iTerm2 ユーザーとしてはなんとかコレを iTerm2 を起動させたい。んだけども、わたしごときの Houdini 力では解決出来なかったので、じゃあ Houdini Terminal が起動時にやってる初期化を iTerm2 でやってしまえば良い!ということでやってみる。

ありがたいことに Houdini Terminal を起動すると、どうやって初期化してるか?を echo してくれているので何をすべきかはすぐに理解できる。

cd '/Applications/Houdini/Houdini20.5.684/Frameworks/Houdini.framework/Versions/Current/Resources'; source ./houdini_setup; cd -

どうやら指定されたバージョンのディレクトリの奥底にある houdini_setup というファイルを読み込んでるっぽい。
これだけ見ると「わざわざ cd せずともダイレクトに source したら良いのでは?」って思ってしまったんだけども、ファイルの中を追いかけてみるとカレントディレクトリに依存する形で書かれていたので、ちゃんと cdpushd するなりしてあげないと上手く動かない。
と、言うことで必要な時に必要なバージョンの houdini_setup を読み込める zsh の function 書いてみた。

# そこそこ簡単に houdini_setup を読み込む。
function houdini-setup() {
    # 第一引数でバージョン指定があればインストールされてるか確認する。
    if [ ! -z $1 ]; then
        wants="/Applications/Houdini/Houdini${1}"
        if [ -d $wants ]; then
            target=$wants
        else
            # 指定されたバージョンが見つからなければエラーにする。
            echo "can't find directory you specified version."
            return 1
        fi
    else
        # バージョン指定がない場合はカレントバージョンにする。
        target="/Applications/Houdini/Current"
    fi
    # houdini_setup を読みに行ってカレントディレクトリに戻ってくる。
    pushd -q "${target}/Frameworks/Houdini.framework/Versions/Current/Resources"
    . ./houdini_setup
    popd -q
}

これを .zshrc とかに書いておくことで houdini-setup ってするとカレントバージョン(最新バージョン?)の houdini_setup が読み込まれるし houdini-setup 20.5.684 とかすると指定されたバージョンのが読み込まれる。インストールされていないバージョンや、 invalid なバージョンが指定されればちゃんとエラーになる。これでめでたく iTerm2 から houdini を起動したり、 VEX で printf した内容が確認出来たりするようになった。

実は未完成?な部分もあって、一度のセッションで複数回 houdini-setup を呼ぶと、どんどん PATH が肥大していく。ホントなら Python の virtualenv みたいに deactivate したらアンロードできるほうが良いんだろうけども、個人利用の範囲やしそこまでしなくても良いかってことで。気が向いたらやるかもしれんしやらんかもしれん。

Discussion