From e13e08c31a2816a15ab10c078fd3adeb7abb83d7 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Wed, 20 Jan 2016 09:59:06 +0000 Subject: Skeleton & buildsystem for thermoprint-server --- server/src/Main.hs | 6 ++++++ server/src/Thermoprint/Server.hs | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 server/src/Main.hs create mode 100644 server/src/Thermoprint/Server.hs (limited to 'server/src') diff --git a/server/src/Main.hs b/server/src/Main.hs new file mode 100644 index 0000000..e392fe1 --- /dev/null +++ b/server/src/Main.hs @@ -0,0 +1,6 @@ +module Main (main) where + +import Thermoprint.Server + +main :: IO () +main = thermoprintServer def diff --git a/server/src/Thermoprint/Server.hs b/server/src/Thermoprint/Server.hs new file mode 100644 index 0000000..bba067d --- /dev/null +++ b/server/src/Thermoprint/Server.hs @@ -0,0 +1,38 @@ +module Thermoprint.Server + ( thermoprintServer + , module Data.Default + ) where + +import Data.Default +import qualified Config.Dyre as Dyre + +import System.IO (hPutStrLn, stderr) +import System.Exit (exitFailure) + +import Control.Monad ((<=<)) + +data Config = Config { dyreError :: Maybe String + } + +instance Default Config where + def = Config { dyreError = Nothing + } + +thermoprintServer :: Config -> IO () +thermoprintServer = Dyre.wrapMain $ Dyre.defaultParams + { Dyre.projectName = "thermoprint-server" + , Dyre.realMain = realMain <=< handleDyreErrors + , Dyre.showError = (\cfg msg -> cfg { dyreError = Just msg }) + } + +handleDyreErrors :: Config -> IO Config +handleDyreErrors cfg + | Just msg <- dyreError cfg = do + hPutStrLn stderr msg + exitFailure + return undefined + | otherwise = return cfg + + +realMain :: Config -> IO () +realMain _ = undefined -- cgit v1.2.3