Milkode

パッケージ間を簡単にディレクトリ移動

mcdについて

コマンドラインからよく実行するコマンドといえばcd(ディレクトリ移動)ではないでしょうか。 mcdコマンドを使えば、Milkodeデータベースに登録したパッケージの間を簡単に移動することが出来ます。

# ディレクトリ移動(パッケージ名を全て打つ必要はない)
$ mcd ruby
/Users/auser/.milkode/packages/zip/ruby-1.9.2-p290

$ cd doc/rake/example/

# パッケージルートに戻る
$ mcd
/Users/auser/.milkode/packages/zip/ruby-1.9.2-p290

インストール

milk mcdで表示されたテキストを.bashrc等に貼付けて下さい。

$ milk mcd
# Copy to '.bashrc'.
mcd() {
    local args="$1 $2 $3 $4 $5 $6 $7 $8 $9"
    local dir=`milk dir --top $args`

    if [ "$dir" = "" ]; then
        echo "fatal: Not found package: $1 $2 $3 $4 $5 $6 $7 $8 $9"
    elif [ "$dir" = "Not registered." ]; then
        echo "fatal: Not a package dir: `pwd`"
    else
        cd $dir
        pwd
    fi
}
# For Cygwin.
mcd() {
    local args="$1 $2 $3 $4 $5 $6 $7 $8 $9"
    local dir=`milk.bat dir --top $args`

    if [ "$dir" = "" ]; then
        echo "fatal: Not found package: $1 $2 $3 $4 $5 $6 $7 $8 $9"
    elif [ "$dir" = "Not registered." ]; then
        echo "fatal: Not a package dir: `pwd`"
    else
        cd $dir
        pwd
    fi
}

コピーしたらsourceしてインストール完了です。

$ source ~/.bashrc 

使い方

パッケージ名を引数に指定するとディレクトリ移動します。

$ mcd a_pro
/Users/auser/Documents/a_project

引数を複数個渡してパッケージ名を絞り込むことが出来ます。

$ mcd milk 0.2.9 # milkode-0.2.4 と milkode-0.2.9 が混在している時に便利
/opt/local/lib/ruby/gems/1.8/gems/milkode-0.2.9

引数無しで実行することでパッケージルートに移動することが出来ます。

$ pwd
/Users/auser/.milkode/packages/zip/ruby-1.9.2-p290/doc/rake/example
$ mcd
/Users/auser/.milkode/packages/zip/ruby-1.9.2-p290

パッケージ外でmcdするとエラーになります。

$ cd ~/
$ mcd 
fatal: Not a package dir: /Users/ongaeshi

Emacsのshell-modeでの制約

Emacsのshell-modeでmcdを実行するとカレントディレクトリが追従されないことがあります。
そのような時はM-x dirsでリセットしましょう。