summaryrefslogtreecommitdiff
path: root/src/Propellor/Message.hs
diff options
context:
space:
mode:
authorJoey Hess2014-11-18 17:53:42 -0400
committerJoey Hess2014-11-18 17:53:42 -0400
commit4a0cac113cf999a58a60f7db7a11d5b0ad623699 (patch)
treeb4ec503709eb3aa89321b37a18c84f6e8c92ebb7 /src/Propellor/Message.hs
parent39b9a61591bf28b1c9c5dc18a6f668c8becb9f6e (diff)
fix color display when running propellor inside docker
Diffstat (limited to 'src/Propellor/Message.hs')
-rw-r--r--src/Propellor/Message.hs12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/Propellor/Message.hs b/src/Propellor/Message.hs
index e184a59e..639171c5 100644
--- a/src/Propellor/Message.hs
+++ b/src/Propellor/Message.hs
@@ -6,20 +6,30 @@ import System.Console.ANSI
import System.IO
import System.Log.Logger
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 ()