{-# LANGUAGE OverloadedStrings #-} import Data.Monoid ( (<>) ) import Hakyll import Control.Lens import Site.Rules ( indexRules , contentRules ) import Site.Contexts import Site.Content main :: IO () main = hakyll $ do match "img/**" $ do route idRoute compile copyFileCompiler match "platicas/**" $ do route idRoute compile copyFileCompiler match "talks/**" $ do route idRoute compile copyFileCompiler match "fonts/*" $ do route idRoute compile copyFileCompiler match "css/*" $ do route idRoute compile compressCssCompiler match "article/**" $ do route idRoute compile getResourceBody match "index.html" $ do route idRoute compile $ getResourceBody >>= applyAsTemplate indexCtx >>= relativizeUrls match "templates/*" $ compile templateBodyCompiler let log = Content { _contentPattern = "log/*.org" , _contentPaths = [] , _contentRoute = setExtension "html" , _contentTemplate = "post" , _contentIndexTemplate = "post" , _contentContext = postCtx , _contentIndexContext = postCtx } logIndex = Content { _contentPaths = [fromFilePath "log/index.html"] , _contentPattern = "" , _contentRoute = idRoute , _contentIndexTemplate = "post-list" , _contentTemplate = "post" , _contentContext = logArchiveCtx , _contentIndexContext = postForArchiveCtx } gsoc = log & contentPattern .~ "gsoc/*.org" gsocIndex = logIndex & contentPaths .~ [fromFilePath "gsoc/index.html"] & contentContext .~ gsocArchiveCtx & contentIndexContext .~ gsocPostForArchiveCtx contentRules log indexRules logIndex contentRules gsoc indexRules gsocIndex