ディレクトリの作成mkdir
が適切なツールではない場合があります。git clone
またはrsync
またはの場合がありますmount
。したがって、次のようなルールがある場合:
needDir dirs = filterM ((fmap not) . doesDirectoryExist) dirs >>= need
rules = do {
"project" </> "tool" %> \out -> do {
needDir [takeDirectory out];
cmd "make -C" [takeDirectory out];
}
"project" %> \out -> cmd "git clone a.url.to/repo.git" [out]
}
予想されるように"project" </> "tool"
、ディレクトリはproject
何よりも先に作成され、git clone
実行さえされません。これを回避する方法はありますか?
ここで新しいRule
ものが必要になると思いますが、ドキュメントは最小限であり、コードが混乱しすぎて、実用的なソリューションを思いつくことができませんでした。