packages feed

stacker-0.0.0.0: src/ColorOption.hs

{-# LANGUAGE OverloadedStrings #-}

module ColorOption
  ( ColorWhen(..)
  , shouldUseColor
  ) where

import Types (ColorWhen(..))
import System.IO (hIsTerminalDevice, stdout)
import System.Environment (lookupEnv)

-- | Determine if color should be used based on the color option
shouldUseColor :: ColorWhen -> IO Bool
shouldUseColor Always = return True
shouldUseColor Never = return False
shouldUseColor Auto = do
  -- Respect NO_COLOR environment variable per https://no-color.org
  noColor <- lookupEnv "NO_COLOR"
  case noColor of
    Just _ -> return False  -- NO_COLOR is set, disable colors
    Nothing -> hIsTerminalDevice stdout  -- Check if stdout is a terminal