brok-0.1.2.0: src/Brok/IO/CLI.hs
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
module Brok.IO.CLI where
import ClassyPrelude
import Data.Text.IO (hPutStr, hPutStrLn)
import System.Console.ANSI (Color (Blue, Green, Magenta, Red, Yellow), ColorIntensity (Dull),
ConsoleLayer (Foreground), SGR (Reset, SetColor), hClearLine,
hCursorUpLine, hSetSGR)
message :: Text -> IO ()
message msg = do
hSetSGR stdout [SetColor Foreground Dull Blue]
hPutStrLn stdout msg
hSetSGR stdout [Reset]
mehssage :: Text -> IO ()
mehssage msg = do
hSetSGR stdout [SetColor Foreground Dull Yellow]
hPutStrLn stdout msg
hSetSGR stdout [Reset]
header :: Text -> IO ()
header msg = do
hSetSGR stdout [SetColor Foreground Dull Magenta]
hPutStrLn stdout $ "*** " ++ msg ++ " ***"
hSetSGR stdout [Reset]
errorMessage :: Text -> IO ()
errorMessage msg = do
hSetSGR stderr [SetColor Foreground Dull Red]
hPutStrLn stderr msg
hSetSGR stderr [Reset]
errors :: Text -> [Text] -> IO ()
errors _ [] = return ()
errors msg missing = do
errorMessage msg
hPutStrLn stderr ""
errorMessage (unlines $ ("- " ++) <$> missing)
split :: Handle -> Color -> Text -> Text -> IO ()
split hdl color left right = do
hSetSGR hdl [SetColor Foreground Dull color]
hPutStr hdl left
hSetSGR hdl [Reset]
hPutStr hdl $ ": " ++ right
hPutStrLn hdl ""
splitErr :: Text -> Text -> IO ()
splitErr = split stderr Red
splitOut :: Text -> Text -> IO ()
splitOut = split stdout Green
splitMeh :: Text -> Text -> IO ()
splitMeh = split stdout Yellow
replace :: Text -> IO ()
replace msg = do
hCursorUpLine stdout 1
hClearLine stdout
hPutStrLn stdout msg