読者です 読者をやめる 読者になる 読者になる

cdp: perlプロジェクトのトップディレクトリに移動

perl shell

Perlのモジュールを書いているとき、lib/を下っていったり
t/を下っていったりして、修正なり、コミットしたりしたあと
テストのために、Makefile.PLがあるディレクトリまで戻るのが
面倒になったので書いた.


Makefile.PL, Build.PLがあるディレクトリまで遡るというだけの
ものです。


(追記)
他のプロジェクトでも使えるように .gitも対象に追加しました。

コード

## Chdir top of Perl project
cdp () {
    orig_dir=$PWD
    current_dir=$PWD
    while [ "$current_dir" != '/' ]
    do
        for file in Makefile.PL Build.PL .git
        do
            if [ -e $current_dir/$file ]
            then
                echo "$current_dir"
                cd $current_dir
                return 0
            fi
        done

        current_dir=`dirname $current_dir`
    done

    echo "$orig_dir is not Project Directory"
    return 1
}

実例

  % pwd
  /home/syohei/program/perl/p5-Acme-EbisuMuscats/lib/Acme/EbisuMuscats
  % cdp
  /home/syohei/program/perl/p5-Acme-EbisuMuscats
  % pwd
  /home/syohei/program/perl/p5-Acme-EbisuMuscats

  # プロジェクト以外の場合
  % pwd
  /home/syohei/tmp/gomi
  % cdp
  /home/syohei/tmp/gomi is not Project Directory

今まで '../'をたくさん書いていた気がしますが、
これでその時間を節約できそうです。