neuron-1.0.0.0: src/exe/Main.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE NoImplicitPrelude #-}
module Main where
import Control.Monad.Reader
import Development.Shake
import Main.Utf8
import Neuron.CLI (run)
import Neuron.Config.Type (Config)
import Neuron.Version (neuronVersion)
import Neuron.Web.Generate (generateSite)
import Neuron.Web.Generate.Route (staticRouteConfig)
import Neuron.Web.HeadHtml (getHeadHtml)
import qualified Neuron.Web.Manifest as Manifest
import Neuron.Web.Route (Route (..), runNeuronWeb)
import Neuron.Web.View (renderRoutePage)
import Neuron.Zettelkasten.Graph.Type (ZettelGraph)
import Reflex.Dom.Core
import Relude
import Rib.Route (writeRoute)
import Rib.Shake (buildStaticFiles, ribInputDir)
main :: IO ()
main = withUtf8 $ run generateMainSite
generateMainSite :: Config -> Action ()
generateMainSite config = do
notesDir <- ribInputDir
buildStaticFiles ["static/**", ".nojekyll"]
manifest <- fmap Manifest.mkManifest $ getDirectoryFiles notesDir Manifest.manifestPatterns
headHtml <- getHeadHtml
let writeHtmlRoute :: Route a -> (ZettelGraph, a) -> Action ()
writeHtmlRoute r x = do
html <- liftIO $
fmap snd $
renderStatic $ do
runNeuronWeb staticRouteConfig $
renderRoutePage neuronVersion config headHtml manifest r x
-- FIXME: Make rib take bytestrings
writeRoute r $ decodeUtf8 @Text html
void $ generateSite config writeHtmlRoute