gpt4 book ai didi

Haskell 摇动 : special rule for building directories

转载 作者:行者123 更新时间:2023-12-03 02:59:08 28 4
gpt4 key购买 nike

有时会出现创建目录mkdir的情况不是正确的工具。可能是git clonersyncmount 。所以当我们有这样的规则时:

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是在这里到期的,但我的文档很少,而且代码太困惑,我无法想出一个可行的解决方案。

最佳答案

将目录视为文件的容器。它们的存在或不是随机的,但如果它们有文件,它们就一定存在。特别是,您不能依赖need目录或编写规则来创建目录。根据需要创建目录 - project/tool.txt 的规则将在必要时创建 project 目录。

如果您想依赖正在执行的 git clone,请依赖特定的 checkout 文件(例如 README.md),规则为创建它是git clone。如果您想确保 make 已运行,请依赖于 make 生成的文件。

可以定义目录感知规则,请参阅this discussion ,但有很多注意事项,因此这不是推荐的方法,也不是默认支持的方法。

关于Haskell 摇动 : special rule for building directories,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35938956/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com