2012年6月30日土曜日

[shell][svn]コミット前にすべてのファイルのシンタックスチェック

仕事で、phpを使うときがある。 自動テストフレームワークがないので、目視チェックのテスト。 とは言え、最低限シンタックスエラーだけは出さないようにしなければならない。 というわけで、 svn commit する前に phplintをしてくれるようにしたスクリプト。
#!/bin/bash
while getopts m: OPT ; do
    case $OPT in
        m) message="$OPTARG" ;;
        \?) echo "Usage : -m 'コミットメッセージ' パス" 1>&2
            exit 1 ;;
    esac
done
# オプション部分を切り捨てる。
shift `expr $OPTIND - 1`

if [ "$1" ]; then
    path=$@
else
    # パスの指定がなければ、カレントフォルダ以下を
    path='./'
fi

if [ "$message" ]; then
   # 新規ファイルは svn add
    addstr=`svn st $path | grep -E '^\?' | sed -e s/"^?[ ]*"//`
    if [ $addstr ]; then
        svn add $addstr
    fi

    # syntax error がないかを確認
    for f in `svn st $path  | grep -E "(php|phtml)" | sed -e s/"^.[ ]*"//`;do
        php -l $f
    done

    str=`svn st $path | grep -E "(php|phtml)" | sed -e s/"^.[ ]*"//`
    # svn diff を表示
    svn diff $str
    echo $str"をコミットしますか : ";read y
    if [[ $y = 'y' ]]; then
        echo "svn ci -m $message `echo $str`"
        svn ci -m "$message" `echo $str`
    fi

else
    echo "コミットコメントを入力してください"
    exit 1
fi

0 件のコメント:

コメントを投稿