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.

Другие вопросы по тегам