有时创建目录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
这里应该有一个新的,但我的文档很少,而且代码太混乱了,我无法想出一个可行的解决方案。