summaryrefslogtreecommitdiff
path: root/src/site.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/site.hs')
-rw-r--r--src/site.hs67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/site.hs b/src/site.hs
new file mode 100644
index 0000000..be4af68
--- /dev/null
+++ b/src/site.hs
@@ -0,0 +1,67 @@
+{-# 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 "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