@@ -22,7 +22,7 @@ import Text.Printf (printf)
2222import System.IO (hIsTerminalDevice , stdout )
2323import System.IO.Unsafe (unsafePerformIO )
2424import System.IO.SafeWrite (withOutputFile )
25- import Data.Maybe (maybeToList , fromMaybe )
25+ import Data.Maybe (maybeToList , fromMaybe , isJust )
2626import Data.IORef (IORef , newIORef , modifyIORef , readIORef )
2727import Data.List (sort )
2828import Data.Aeson ((.=) )
@@ -45,6 +45,7 @@ import qualified Data.ByteString.Lazy.Char8 as BL8
4545import qualified Data.ByteString.Lazy as BL
4646import qualified Graphics.Rendering.Chart.Easy as G
4747import qualified Graphics.Rendering.Chart.Backend.Cairo as G
48+ import System.Environment (lookupEnv )
4849
4950
5051import Data.FastQ (FastQEncoding (.. ), encodingName )
@@ -175,14 +176,15 @@ shouldPrint True ot Normal = ot >= InfoOutput
175176output :: OutputType -> Int -> String -> NGLessIO ()
176177output ! ot ! lno ! msg = do
177178 isTerm <- liftIO $ hIsTerminalDevice stdout
179+ hasNOCOLOR <- isJust <$> liftIO (lookupEnv " NO_COLOR" )
178180 verb <- nConfVerbosity <$> nglConfiguration
179181 traceSet <- nConfTrace <$> nglConfiguration
180182 colorOpt <- nConfColor <$> nglConfiguration
181183 let sp = traceSet || shouldPrint isTerm ot verb
182184 doColor = case colorOpt of
183185 ForceColor -> True
184186 NoColor -> False
185- AutoColor -> isTerm
187+ AutoColor -> isTerm && not hasNOCOLOR
186188 c <- colorFor ot
187189 liftIO $ do
188190 t <- getZonedTime
0 commit comments