3

ディレクトリの作成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ものが必要になると思いますが、ドキュメントは最小限であり、コードが混乱しすぎて、実用的なソリューションを思いつくことができませんでした。

4

1 に答える 1