From e07dc9b1d336e86ce51b2a94fcfa943cc1650afd Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 25 Nov 2014 18:55:07 -0400 Subject: propellor.debug can be set in the git config to enable more persistent debugging output. --- src/Propellor/Message.hs | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) (limited to 'src/Propellor') diff --git a/src/Propellor/Message.hs b/src/Propellor/Message.hs index 09a92538..49dc4934 100644 --- a/src/Propellor/Message.hs +++ b/src/Propellor/Message.hs @@ -11,10 +11,13 @@ import System.Log.Handler.Simple import "mtl" Control.Monad.Reader import Data.Maybe import Control.Applicative +import System.Directory +import Control.Monad.IfElse import Propellor.Types import Utility.Monad import Utility.Env +import Utility.Process data MessageHandle = ConsoleMessageHandle @@ -99,17 +102,23 @@ colorLine h intensity color msg = do putStrLn "" hFlush stdout --- | Causes a debug message to be displayed when PROPELLOR_DEBUG=1 debug :: [String] -> IO () debug = debugM "propellor" . unwords checkDebugMode :: IO () checkDebugMode = go =<< getEnv "PROPELLOR_DEBUG" where - go (Just "1") = do - f <- setFormatter - <$> streamHandler stderr DEBUG - <*> pure (simpleLogFormatter "[$time] $msg") - updateGlobalLogger rootLoggerName $ - setLevel DEBUG . setHandlers [f] - go _ = noop + go (Just "1") = enableDebugMode + go (Just _) = noop + go Nothing = whenM (doesDirectoryExist ".git") $ + whenM (any (== "1") . lines <$> getgitconfig) $ + enableDebugMode + getgitconfig = readProcess "git" ["config", "propellor.debug"] + +enableDebugMode :: IO () +enableDebugMode = do + f <- setFormatter + <$> streamHandler stderr DEBUG + <*> pure (simpleLogFormatter "[$time] $msg") + updateGlobalLogger rootLoggerName $ + setLevel DEBUG . setHandlers [f] -- cgit v1.2.3