{-# LANGUAGE LambdaCase #-}
module Stack.DefaultColorWhen
( defaultColorWhen
) where
import Stack.Prelude ( stdout )
import Stack.Types.ColorWhen ( ColorWhen (..) )
import System.Console.ANSI ( hSupportsANSI )
import System.Environment ( lookupEnv )
defaultColorWhen :: IO ColorWhen
defaultColorWhen :: IO ColorWhen
defaultColorWhen = String -> IO (Maybe String)
lookupEnv String
"NO_COLOR" forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Just String
_ -> forall (f :: * -> *) a. Applicative f => a -> f a
pure ColorWhen
ColorNever
Maybe String
_ -> Handle -> IO Bool
hSupportsANSI Handle
stdout forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False -> forall (f :: * -> *) a. Applicative f => a -> f a
pure ColorWhen
ColorNever
Bool
_ -> forall (f :: * -> *) a. Applicative f => a -> f a
pure ColorWhen
ColorAuto