-- | 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