Shake - как скопировать все содержимое каталога
Я хочу использовать 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
,
Как правильно это сделать? Должен ли я просто скопировать все содержимое каталога (например, System.Path из fsutils)?
1 ответ
Этот ответ верен по духу, поэтому я подозреваю, что есть лишь несколько деталей, которые немного ошибочны:
- Есть ли
fontFiles1
содержать полный список файлов? Я думаю, что шаблон должен быть**
и что ведущий/
сбивает с толку вещи. В любом случае,**
было бы проще и более перспективным. replaceDirectory
заменяет все компоненты каталога, поэтому, если у вас естьstatic/et-book/foo/bar.txt
, то вы собираетесь скопировать изtemplates/et-book/bar.txt
, Предполагая, что вы знаетеstaticD
всегда точно один компонент каталога, тоtemplatesD</>dropDirectory1 out
будет работать в качестве источника местоположения.
Шаблон копирования каталога довольно распространен, поэтому я, вероятно, добавлю вспомогательную функцию, чтобы упростить его в будущей версии. Билет и обсуждение этого происходит на трекере ошибок Shake.