module Text.Hakyll.Configurations.Static
( staticConfiguration
) where
import Control.Applicative ((<$>))
import Control.Monad (filterM, forM_)
import Text.Hakyll.File ( getRecursiveContents, inDirectory, inHakyllDirectory
, directory )
import Text.Hakyll.Internal.FileType (isRenderableFile)
import Text.Hakyll.HakyllMonad (Hakyll, logHakyll)
import Text.Hakyll.Render (renderChain, css, static)
import Text.Hakyll.CreateContext (createPage)
staticConfiguration :: Hakyll ()
staticConfiguration = do
files <- filterM isRenderableFile' =<< getRecursiveContents "."
mainTemplate <- take 1 <$> getRecursiveContents templateDir
logHakyll $ case mainTemplate of [] -> "Using no template"
(x : _) -> "Using template " ++ x
forM_ files $ renderChain mainTemplate . createPage
directory static staticDir
directory css cssDir
where
isRenderableFile' file = do
inHakyllDirectory' <- inHakyllDirectory file
return $ isRenderableFile file
&& not (any (inDirectory file) [templateDir, cssDir, staticDir])
&& not inHakyllDirectory'
templateDir = "templates"
cssDir = "css"
staticDir = "static"