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.
36 lines
1.3 KiB
36 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
|
|
|