summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJoey Hess2014-11-26 10:51:41 -0400
committerJoey Hess2014-11-26 10:51:41 -0400
commit3d42f1fa19577a7f9c2b629281fb5675772a0455 (patch)
treea5d0cee89993c3616505aedff758b14329b4a4ad /src
parent1d8e08f2ac5a1d996e7aab1df0c6c7ff5631210f (diff)
parent5a104675e4e18812f8794d9631d54c91b6d9be12 (diff)
Merge branch 'joeyconfig'
Diffstat (limited to 'src')
-rw-r--r--src/Propellor/Message.hs27
1 files changed, 19 insertions, 8 deletions
diff --git a/src/Propellor/Message.hs b/src/Propellor/Message.hs
index 09a92538..bcd99649 100644
--- a/src/Propellor/Message.hs
+++ b/src/Propellor/Message.hs
@@ -11,10 +11,14 @@ 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
+import Utility.Exception
data MessageHandle
= ConsoleMessageHandle
@@ -99,17 +103,24 @@ 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 = catchDefaultIO "" $
+ readProcess "git" ["config", "propellor.debug"]
+
+enableDebugMode :: IO ()
+enableDebugMode = do
+ f <- setFormatter
+ <$> streamHandler stderr DEBUG
+ <*> pure (simpleLogFormatter "[$time] $msg")
+ updateGlobalLogger rootLoggerName $
+ setLevel DEBUG . setHandlers [f]