cachix-1.13.0: src/Cachix/Client/Terminal.hs
module Cachix.Client.Terminal
( isCI,
useInteractiveProgress,
)
where
import Data.Char qualified as Char
import Protolude
import System.Environment (lookupEnv)
import System.IO (hIsTerminalDevice)
import Prelude (String)
isCI :: Maybe String -> Bool
isCI = maybe False $ \value -> fmap Char.toLower value `elem` ["true", "1"]
useInteractiveProgress :: Handle -> IO Bool
useInteractiveProgress hdl = do
isTerminal <- hIsTerminalDevice hdl
runningInCI <- isCI <$> lookupEnv "CI"
return $ isTerminal && not runningInCI