stackctl-1.3.0.1: src/Stackctl/Colors.hs
-- | Facilities for colorizing output
module Stackctl.Colors
( Colors(..)
, getColorsStdout
, getColorsLogger
, noColors
) where
import Stackctl.Prelude
import Blammo.Logging.Colors
import Blammo.Logging.Logger
import Blammo.Logging.LogSettings (shouldColorHandle)
-- | Return 'Colors' based on options and 'stdout'
getColorsStdout :: (MonadIO m, MonadReader env m, HasLogger env) => m Colors
getColorsStdout = getColorsHandle stdout
-- | Return 'Colors' based on options given 'Handle'
getColorsHandle
:: (MonadIO m, MonadReader env m, HasLogger env) => Handle -> m Colors
getColorsHandle h = do
ls <- view $ loggerL . to getLoggerLogSettings
getColors <$> shouldColorHandle ls h
-- | Return 'Colors' consistent with the ambient 'Logger'
getColorsLogger :: (MonadReader env m, HasLogger env) => m Colors
getColorsLogger = view $ loggerL . to (getColors . getLoggerShouldColor)
noColors :: Colors
noColors = getColors False