optparse-applicative
Version 0.3.1 revision 2 uploaded by HerbertValerioRiedel.
Package meta
- Synopsis
- Utilities and combinators for parsing command line options
- Description
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 aString
argument, whilequiet
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, whileopts
is a complete description of the program, used when generating a help text. The helper combinator takes any parser, and adds ahelp
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.
- Author
- Paolo Capriotti
- Bug reports
- https://github.com/pcapriotti/optparse-applicative/issues
- Category
- System
- Copyright
- (c) 2012 Paolo Capriotti <p.capriotti@gmail.com>
- Homepage
- https://github.com/pcapriotti/optparse-applicative
- Maintainer
- p.capriotti@gmail.com
- Package URL
- n/a
- Stability
- n/a