{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE LambdaCase #-} import Network.CGI (runCGI, handleErrors, CGIResult, CGI, outputFPS) import Text.Blaze.Html.Renderer.Utf8 (renderHtml) import Settlr.Config (withConfig) import Settlr.Routes (loadRoute, Route(..)) import Settlr.Views.ErrorNotFound (viewErrorNotFound) import Settlr.Views.Home (viewHome) cgiMain :: CGI CGIResult cgiMain = withConfig $ do view <- loadRoute >>= \case Nothing -> viewErrorNotFound Just RouteHome -> viewHome Just RouteNew -> viewErrorNotFound outputFPS (renderHtml view) main :: IO () main = runCGI (handleErrors cgiMain)