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
,但我的文檔很少,而且代碼太混亂了,我無法想出一個可行的解決方案。
此問題也在https://github.com/ndmitchell/shake/issues/430上討論(並且結論將被複製爲答案)。 –