knife solo cook コマンドの誤爆を防ぐ

knife solo cookコマンドはchefリポジトリ内で実行しないと、失敗するだけでなく、

余計なnodeファイルなどが作成されてしまう。 ただ、エラーで終了してくれればいいんだけど。。。

しばらく、失敗している原因(実行するディレクトリが違う事)に気づかいない場合も多々ある。 Recipeやnodeファイルを無駄に見なおしたり。。。

ということで、 対症療法ですがaliasでなんとかしてみました。

方法

以下の関数とaliasを.zshrc.bashrcに設定するだけです。

function knife_solo_check() {
  if [ "$1" = 'solo' ] && [ "$2" = 'cook' ] && [ ! -d .chef ]; then
    \echo -e '\033[0;31mERROR:\033[0;39m Not chef repository directory.'
  else
    \knife $@
  fi
}
alias knife=knife_solo_check

内容は単純で、knifeコマンドの引数がsolo cookであるとき且つ、 実行した場所に.chefディレクトリが存在しない場合にだけエラーを表示します。

もしかしたら、こういうことにならない方法がすでにあるかもしれないし、 もっといい方法があるかもしれない。。 あったら教えて下さい。