optparse-applicative
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.
- base >= 4 && < 4.8
- transformers >= 0.2 && < 0.5
- transformers-compat == 0.3.*
- process >= 1.0 && < 1.3
- ansi-wl-pprint >= 0.6 && < 0.7
- 0.19.0.0
- 0.18.1.0
- 0.18.0.0
- 0.17.1.0
- 0.17.0.0
- 0.16.1.0
- 0.16.0.0
- 0.15.1.0
- 0.15.0.0
- 0.14.3.0
- 0.14.2.0
- 0.14.1.0
- 0.14.0.0
- 0.13.2.0
- 0.13.1.0
- 0.13.0.0
- 0.12.1.0
- 0.12.0.0
- 0.11.0.2
- 0.11.0.1
- 0.11.0
- 0.10.0
- 0.9.1.1
- 0.9.1
- 0.9.0
- 0.8.1
- 0.8.0.1
- 0.8.0
- 0.7.0.2
- 0.7.0.1
- 0.7.0
- 0.6.0
- 0.5.2.1
- 0.5.2
- 0.5.1
- 0.5.0
- 0.4.3
- 0.4.2
- 0.4.1
- 0.4.0
- 0.3.2
- 0.3.1
- 0.3.0
- 0.2.0
- 0.1.1
- 0.1.0
- 0.0.1