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
37 lines
1.3 KiB
|
12 years ago
|
{-# 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
|