我想使用震动进行回归测试,并且必须设置测试目录。我想将带有字体的目录复制到测试目录中,并在目标目录中包含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)?
答案 0 :(得分:1)
这个答案在本质上是正确的,所以我怀疑只有一些细节有些错误:
fontFiles1
是否包含文件的完整列表?我的猜测是模式应该为**
,并且前导/
会使事情变得混乱。无论哪种方式,**
都将更简单,并且将为将来提供更多证明。replaceDirectory
替换了所有目录组件,因此,如果您拥有static/et-book/foo/bar.txt
,则将从templates/et-book/bar.txt
复制。假设您知道staticD
始终只是一个目录组件,那么templatesD</>dropDirectory1 out
将作为源位置。复制目录的模式非常普遍,因此我可能会添加一个辅助函数,以使其在将来的版本中更容易使用。 Shake bug tracker上有一张票和有关此事的讨论。