Shake - как скопировать все содержимое каталога - PullRequest
0 голосов
/ 30 января 2019

Я хочу использовать 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 Ответ

0 голосов
/ 04 февраля 2019

Этот ответ верен по духу, поэтому я подозреваю, что есть лишь несколько деталей, которые немного ошибочны:

  • Содержит ли fontFiles1 полный список файлов?Я предполагаю, что шаблон должен быть **, и что ведущий / сбивает с толку.В любом случае, ** будет проще и более пригодным для будущего.
  • replaceDirectory заменяет все компоненты каталога, поэтому, если у вас есть static/et-book/foo/bar.txt, вы собираетесь скопировать из templates/et-book/bar.txt.Предполагая, что вы знаете, staticD всегда является точно одним компонентом каталога, тогда templatesD</>dropDirectory1 out будет работать в качестве исходного местоположения.

Шаблон копирования каталога довольно распространен, поэтому я, вероятно, добавлю помощникафункция, чтобы сделать это проще в будущей версии.Билет и обсуждение этого происходит на Shake bug tracker .

...