0

我想使用 Shake 进行回归测试,我必须设置测试目录。我想将一个带有字体的目录复制到测试目录中,并need在目标目录中包含一个,然后复制文件,但我的代码给出了错误:

Probably due to calling 'need' on a directory. Shake only permits 'need' on files.

我试图获取needs单个文件,但没有成功。我有

        fontFiles1 <- getDirectoryFiles (templatesD</>"et-book" ) ["/**/*"]
        need $ map (\f -> staticD</>"et-book"</>f) fontFiles1 

接着 :

  (staticD</>"et-book/**") %> \out ->
        copyFileChanged  (replaceDirectory out (templatesD</>"et-book")) out

但这不包括 . 下的所有子目录et-book

这样做的正确方法是什么?我是否应该只复制所有目录内容(例如来自 fsutils 的 System.Path)?

4

1 回答 1

1

这个答案在精神上是正确的,所以我怀疑只有几个细节有点错误:

  • 是否fontFiles1包含完整的文件列表?我的猜测是模式应该是**,并且领先/是令人困惑的事情。无论哪种方式,**都会更简单,更有未来的证明。
  • 替换所有目录组件,因此replaceDirectory如果您有static/et-book/foo/bar.txt,那么您将从templates/et-book/bar.txt. 假设您知道staticD始终是一个目录组件,则templatesD</>dropDirectory1 out可以用作源位置。

复制目录的模式很常见,所以我可能会添加一个辅助函数以使其在未来的版本中更容易。Shake bug tracker上正在发生一张票和有关该问题的讨论。

于 2019-02-03T21:01:37.957 回答