packages feed

taskell-1.3.5.0: src/UI/CLI.hs

{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}

module UI.CLI
  ( prompt
  , promptYN
  ) where

import           ClassyPrelude
import           Data.Text.IO  (hPutStrLn)
import           System.Exit   (exitFailure)

prompt :: Text -> IO Text
prompt s = do
  putStr $ s ++ ": "
  hFlush stdout -- prevents buffering
  getLine

promptYN :: Text -> IO Bool
promptYN s = (==) "y" <$> prompt (s ++ " (y/n)")

exitWithErrorMessage :: Text -> IO ()
exitWithErrorMessage str = hPutStrLn stderr str >> void exitFailure