taskell-1.5.0.0: src/UI/CLI.hs
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
module UI.CLI
( prompt
, promptYN
, PromptYN(PromptYes)
) where
import ClassyPrelude
prompt :: Text -> IO Text
prompt s = do
putStr $ s <> ": "
hFlush stdout -- prevents buffering
getLine
data PromptYN
= PromptYes
| PromptNo
promptYN :: PromptYN -> Text -> IO Bool
promptYN PromptYes s = not . flip elem ["n", "no"] . toLower <$> prompt (s <> " (Y/n)")
promptYN PromptNo s = not . flip elem ["y", "yes"] . toLower <$> prompt (s <> " (y/N)")