{-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE OverloadedStrings #-} module Cmt.IO.CLI ( blank , message , mehssage , header , errorMessage ) where import ClassyPrelude import Data.Text.IO (hPutStrLn) import System.Console.ANSI (Color (Blue, Magenta, Red, Yellow), ColorIntensity (Dull), ConsoleLayer (Foreground), SGR (Reset, SetColor), hSetSGR) import Cmt.Types.App (App, settingsColourize) setSGR :: Handle -> [SGR] -> App setSGR hndl settings = do colourize <- asks settingsColourize when colourize $ lift (hSetSGR hndl settings) blank :: App blank = putStrLn "" message :: Text -> App message msg = do setSGR stdout [SetColor Foreground Dull Blue] putStrLn msg setSGR stdout [Reset] mehssage :: Text -> App mehssage msg = do setSGR stdout [SetColor Foreground Dull Yellow] putStrLn msg setSGR stdout [Reset] header :: Text -> App header msg = do setSGR stdout [SetColor Foreground Dull Magenta] putStrLn $ "*** " ++ msg ++ " ***" setSGR stdout [Reset] errorMessage :: Text -> App errorMessage msg = do setSGR stderr [SetColor Foreground Dull Red] lift $ hPutStrLn stderr msg setSGR stderr [Reset]