summaryrefslogtreecommitdiff
path: root/src/Propellor/Message.hs
diff options
context:
space:
mode:
authorJoey Hess2014-11-18 00:41:06 -0400
committerJoey Hess2014-11-18 00:42:12 -0400
commit1a906048511cf606b15d28c2f151ef8e1d848a50 (patch)
tree679285c5c0aed91f98bef0000c44b04228219fe2 /src/Propellor/Message.hs
parent194785b556b2712f5e56672d8915fb939de6e59a (diff)
ssh won't allocate a tty; work around
stdin is not a terminal, drat ssh I don't much like this workaround
Diffstat (limited to 'src/Propellor/Message.hs')
-rw-r--r--src/Propellor/Message.hs8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/Propellor/Message.hs b/src/Propellor/Message.hs
index e184a59e..3671e05b 100644
--- a/src/Propellor/Message.hs
+++ b/src/Propellor/Message.hs
@@ -6,20 +6,26 @@ import System.Console.ANSI
import System.IO
import System.Log.Logger
import "mtl" Control.Monad.Reader
+import Control.Applicative
+import Data.Maybe
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 "TERM"))
( return ConsoleMessageHandle
, return TextMessageHandle
)
+forceConsoleMode :: IO ()
+forceConsoleMode = void $ setEnv "TERM" "vt100" False
+
whenConsole :: MessageHandle -> IO () -> IO ()
whenConsole ConsoleMessageHandle a = a
whenConsole _ _ = return ()