diff options
| author | Joey Hess <joey@kitenet.net> | 2014-11-18 21:18:26 -0400 |
|---|---|---|
| committer | Joey Hess <joey@kitenet.net> | 2014-11-18 21:18:26 -0400 |
| commit | aa3f31940b544e528a5eb3d2e9825a703a8b5013 (patch) | |
| tree | 0a14bfdf3be969f6029fb54f0c95e2e06ae7d40d /src/Propellor/Message.hs | |
| parent | a19f01a508747fb1f04849616422d1530e8ec2da (diff) | |
| parent | b964b4836321832ad8d3be7268fd3af9ed8f5ea8 (diff) | |
Merge branch 'joeyconfig'
Diffstat (limited to 'src/Propellor/Message.hs')
| -rw-r--r-- | src/Propellor/Message.hs | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/src/Propellor/Message.hs b/src/Propellor/Message.hs index e184a59e..a1e510ab 100644 --- a/src/Propellor/Message.hs +++ b/src/Propellor/Message.hs @@ -5,21 +5,34 @@ module Propellor.Message where import System.Console.ANSI import System.IO import System.Log.Logger +import System.Log.Formatter +import System.Log.Handler (setFormatter, LogHandler) +import System.Log.Handler.Simple import "mtl" Control.Monad.Reader +import Data.Maybe +import Control.Applicative import Propellor.Types import Utility.Monad +import Utility.Env data MessageHandle = ConsoleMessageHandle | TextMessageHandle mkMessageHandle :: IO MessageHandle -mkMessageHandle = ifM (hIsTerminalDevice stdout) +mkMessageHandle = ifM (hIsTerminalDevice stdout <||> (isJust <$> getEnv "PROPELLOR_CONSOLE")) ( return ConsoleMessageHandle , return TextMessageHandle ) +forceConsole :: IO () +forceConsole = void $ setEnv "PROPELLOR_CONSOLE" "1" True + +isConsole :: MessageHandle -> Bool +isConsole ConsoleMessageHandle = True +isConsole _ = False + whenConsole :: MessageHandle -> IO () -> IO () whenConsole ConsoleMessageHandle a = a whenConsole _ _ = return () @@ -88,3 +101,14 @@ colorLine h intensity color msg = do -- | 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 |
