CakePHPでbake projectする際、tmp/logsやlibsなど空ディレクトリにemptyを入れておく方法
./cake -app /path/to/app/to/put bake [project]
新しくCakePHPアプリを作る際、appディレクトリをコピーせずに、bakeで作成しています。app_controller.php や app_model.php などを作成してくれますし、APP/config/core.php の Security.salt と Security.cipherSeed の生成もしてくれます。ついでに project つけずにbakeを実行すれば、bake project と bake db_config をまとめて実行できます。
cakeコンソールのBakeを使ったアプリケーションのセットアップ - kanonjiの日記 を参照
ただ、気になっていたのはAPP/tmp 以下のディレクトリやAPP/libs など、空ディレクトリに入っている empty というファイルが消えてしまう事です。git や svn では、空ディレクトリはリポジトリに入らないので、この empty が消えてると何かと不便だったんだけど、empty を消さずに bake でCakePHPアプリを作成する方法を見つけました。
結論
./cake -app /path/to/app/to/put -empty true bake [project]
-empty というパラメーターをつける事で出来ます。値にtrueを渡してますが、実はこれは何でもいいようです。
if (!empty($this->params['empty'])) {
http://api13.cakephp.org/view_source/project-task/#l-158
$skip = array();
}
ちょうどここが判別になるようなので、empty()でtrueにならない値だったら、$skip に空配列が入ります。
function bake($path, $skel = null, $skip = array('empty')) {
http://api13.cakephp.org/view_source/project-task/#l-130
$skipには、引数でこのようにarray('empty')が初期設定されてます。これのせいで empty というファイルがスキップされるようなので、-empty パラメーターで何らかの値を渡す事で、$skip = array()に出来るという形です。