You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

37 lines
1.3 KiB

{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE OverloadedStrings #-}
module Run.Config where
import qualified Data.Configurator as Conf
import qualified Data.Configurator.Types as Conf
import System.Directory
import System.FilePath
import System.Log.Logger
import qualified Data.Text as Text
-- | Load the configuration files
loadConfig :: IO Conf.Config
loadConfig = do
appData <- getAppUserDataDirectory "pontarius-xmpp-tests"
home <- getHomeDirectory
Conf.load [ Conf.Optional $ appData </> "pontarius-xmpp-tests.conf"
, Conf.Optional $ home </> ".pontarius-xmpp-tests.conf"
]
configuredLoglevel conf = do
loglevel <- Conf.lookup conf "loglevel" >>= \case
(Nothing :: Maybe Text.Text) -> return ERROR
Just "debug" -> return DEBUG
Just "info" -> return INFO
Just "notice" -> return NOTICE
Just "warning" -> return WARNING
Just "error" -> return ERROR
Just "critical" -> return CRITICAL
Just "alert" -> return ALERT
Just "emergency" -> return EMERGENCY
Just e -> error $ "Log level " ++ (Text.unpack e) ++ " unknown"
updateGlobalLogger "Pontarius.Xmpp" $ setLevel loglevel
return loglevel