The optparse-applicative package

[Tags: bsd3, library]

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.


Properties

Versions0.0.1, 0.1.0, 0.1.1, 0.2.0, 0.3.0, 0.3.1, 0.3.2, 0.4.0, 0.4.1, 0.4.2, 0.4.3, 0.5.0, 0.5.1, 0.5.2, 0.5.2.1, 0.6.0, 0.7.0, 0.7.0.1, 0.7.0.2, 0.8.0, 0.8.0.1, 0.8.1, 0.9.0, 0.9.1, 0.9.1.1, 0.10.0
Dependenciesbase (==4.*), process (==1.1.*), transformers (>=0.2 && <0.4)
LicenseBSD3
Copyright(c) 2012 Paolo Capriotti <p.capriotti@gmail.com>
AuthorPaolo Capriotti
Maintainerp.capriotti@gmail.com
CategorySystem
Home pagehttps://github.com/pcapriotti/optparse-applicative
Bug trackerhttps://github.com/pcapriotti/optparse-applicative/issues
Source repositoryhead: git clone https://github.com/pcapriotti/optparse-applicative.git
Upload dateSun Dec 23 21:58:59 UTC 2012
Uploaded byPaoloCapriotti
DistributionsDebian:0.9.1.1, Fedora:0.9.0, FreeBSD:0.5.2.1, NixOS:0.10.0
Downloads65877 total (9365 in last 30 days)

Modules

[Index]

Downloads

Maintainers' corner

For package maintainers and hackage trustees