optparse-applicative-0.11.0.2: Utilities and combinators for parsing command line options
Here is a simple example of an applicative option parser:
data Sample = Sample { hello :: String , quiet :: Bool } sample :: Parser Sample sample = Sample <$> strOption ( long "hello" <> metavar "TARGET" <> help "Target for the greeting" ) <*> switch ( long "quiet" <> help "Whether to be quiet" )
The parser is built using applicative style starting from a set of basic
combinators. In this example, hello
is defined as an option
with a
String
argument, while quiet
is a boolean flag
(called switch
).
A parser can be used like this:
greet :: Sample -> IO () greet (Sample h False) = putStrLn $ "Hello, " ++ h greet _ = return () main :: IO () main = execParser opts >>= greet where opts = info (helper <*> sample) ( fullDesc <> progDesc "Print a greeting for TARGET" <> header "hello - a test for optparse-applicative" )
The greet
function is the entry point of the program, while opts
is a
complete description of the program, used when generating a help text. The
helper
combinator takes any parser, and adds a help
option to it (which
always fails).
The hello
option in this example is mandatory (since it doesn't have a
default value), so running the program without any argument will display a
help text:
hello - a test for optparse-applicative Usage: hello --hello TARGET [--quiet] Print a greeting for TARGET Available options: -h,--help Show this help text --hello TARGET Target for the greeting --quiet Whether to be quiet
containing a short usage summary, and a detailed list of options with descriptions.