{-# LANGUAGE OverloadedStrings #-} module Conf ( getConf , Conf(..) ) where import Data.Text (Text) import qualified Data.ConfigManager as Conf import Data.Time.Clock (NominalDiffTime) data Conf = Conf { hostname :: Text , port :: Int , signInExpiration :: NominalDiffTime , currency :: Text , noReplyMail :: Text } deriving Show getConf :: FilePath -> IO (Either Text Conf) getConf path = (flip fmap) (Conf.readConfig path) (\configOrError -> do conf <- configOrError Conf <$> Conf.lookup "hostname" conf <*> Conf.lookup "port" conf <*> Conf.lookup "signInExpiration" conf <*> Conf.lookup "currency" conf <*> Conf.lookup "noReplyMail" conf )