Я пытаюсь использовать Shake, чтобы конвертировать некоторые файлы markdonw в html («выпекать»).Файлы уценки находятся в каталоге «dough», а html должен перейти в «baked».Цель состоит в том, чтобы создать файл index.html
, который связывает другие файлы.
Это мое первое использование Shake!
Преобразование работает, но в конце первое правило создаетошибка
`rule finished running but did not produce file:`
Возможно, причина в том, что файл index.html
создается раньше (со вторым правилом).Как я могу сказать первому правилу не ожидать результата (или снова заставить производство)?
вторичный вопрос: как изменить первое правило для сбора файлов с расширениями "md" и "markdown"?
Спасибо за помощь!Предложения по улучшению приветствуются!
bakedD = "site/baked" -- toFilePath bakedPath
doughD = "site/dough"
shakeWrapped :: IO ()
shakeWrapped = shakeArgs shakeOptions {shakeFiles=bakedD
, shakeVerbosity=Loud
, shakeLint=Just LintBasic
} $
do
want ["index"<.>"html"]
"index"<.>"html" %> \out ->
do
mds <- getDirectoryFiles doughD ["//*.md"]
let htmlFiles = [bakedD </> md -<.> "html" | md <- mds]
need htmlFiles
liftIO $ bakeOneFileIO "baked/index.html"
(bakedD <> "//*.html") %> \out ->
do
let c = dropDirectory1 $ out -<.> "md"
liftIO $ bakeOneFileIO c