{-# LANGUAGE OverloadedStrings #-} module Conf ( parse , Conf(..) ) where import Data.Text (Text) import qualified Data.ConfigManager as Conf import Data.Time.Clock (NominalDiffTime) import Model.URL data Conf = Conf { url :: URL , mailFrom :: Text , mailTo :: [Text] , properties :: [Text] , listenInterval :: NominalDiffTime } deriving Show parse :: FilePath -> IO (Either Text Conf) parse path = (flip fmap) (Conf.readConfig path) (\configOrError -> do conf <- configOrError Conf <$> Conf.lookup "url" conf <*> Conf.lookup "mailFrom" conf <*> Conf.lookup "mailTo" conf <*> Conf.lookup "properties" conf <*> Conf.lookup "listenInterval" conf )