--------------------------------------------------------------------------------
{-# LANGUAGE OverloadedStrings #-}

import Hakyll
import Text.Pandoc.Options

--------------------------------------------------------------------------------
hakyllConfig :: Configuration
hakyllConfig =
  defaultConfiguration
    { deployCommand =
        "rsync  -ave ssh --rsync-path=/usr/bin/openrsync _site/ ohqo@192.168.50.1:/var/www/htdocs/electriclam.com --delete"
    }

pandocOptions :: WriterOptions
pandocOptions = defaultHakyllWriterOptions {writerHTMLMathMethod = MathML }

main :: IO ()
main =
  hakyllWith hakyllConfig $ do
    match "css/*" $ do
      route idRoute
      compile compressCssCompiler
    match "papers/*" $ do
      route idRoute
      compile copyFileCompiler
    match "images/favicon.ico" $ do
      route (constRoute "favicon.ico")
      compile copyFileCompiler
    match "index.org" $ do
      route $ setExtension "html"
      compile $ do
        let indexCtx = constField "title" "Yiyun Liu" <> defaultContext
        pandocCompiler
          >>= applyAsTemplate indexCtx
          >>= loadAndApplyTemplate "templates/default.html" indexCtx
          >>= relativizeUrls
    match "templates/*" $ compile templateBodyCompiler
