| <?xml version="1.0" encoding="UTF-8"?> |
| <!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> |
| <pkgmetadata> |
| <maintainer type="project"> |
| <email>haskell@gentoo.org</email> |
| <name>Gentoo Haskell</name> |
| </maintainer> |
| <longdescription> |
| Here is a simple example of an applicative option parser: |
| |
| @ |
| data Sample = Sample |
| &#x20; &#x7b; hello :: String |
| &#x20; , quiet :: Bool &#x7d; |
| |
| sample :: Parser Sample |
| sample = Sample |
| &#x20; \<$\> strOption |
| &#x20; ( long \"hello\" |
| &#x20; & metavar \"TARGET\" |
| &#x20; & help \"Target for the greeting\" ) |
| &#x20; \<*\> switch |
| &#x20; ( long \"quiet\" |
| &#x20; & 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 |
| &#x20; where |
| &#x20; opts = info (helper \<*\> sample) |
| &#x20; ( fullDesc |
| &#x20; & progDesc \"Print a greeting for TARGET\" |
| &#x20; & 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. |
| </longdescription> |
| <upstream> |
| <remote-id type="github">pcapriotti/optparse-applicative</remote-id> |
| </upstream> |
| </pkgmetadata> |