1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
{-# LANGUAGE CPP #-}
module Examples.Hello where
import Options.Applicative
import Data.Semigroup ((<>))
import Control.Monad (replicateM_)
data Sample = Sample
{ hello :: String
, quiet :: Bool
, repeat :: Int }
deriving Show
sample :: Parser Sample
sample = Sample
<$> strOption
( long "hello"
<> metavar "TARGET"
<> help "Target for the greeting" )
<*> switch
( long "quiet"
<> short 'q'
<> help "Whether to be quiet" )
<*> option auto
( long "repeat"
<> help "Repeats for greeting"
<> showDefault
<> value 1
<> metavar "INT" )
main :: IO ()
main = greet =<< execParser opts
opts :: ParserInfo Sample
opts = info (sample <**> helper)
( fullDesc
<> progDesc "Print a greeting for TARGET"
<> header "hello - a test for optparse-applicative" )
greet :: Sample -> IO ()
greet (Sample h False n) = replicateM_ n . putStrLn $ "Hello, " ++ h
greet _ = return ()
|