optparse-applicative/optparse-applicative.cabal

96 lines
3.3 KiB
Plaintext
Raw Normal View History

2012-05-09 19:16:01 +04:00
name: optparse-applicative
2012-07-23 04:01:12 +04:00
version: 0.3.0
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
&#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 ()
2012-06-12 01:42:45 +04:00
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
>
>Common 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.
2012-05-09 19:16:01 +04:00
license: BSD3
license-file: LICENSE
author: Paolo Capriotti
maintainer: p.capriotti@gmail.com
copyright: (c) 2012 Paolo Capriotti <p.capriotti@gmail.com>
category: System
build-type: Simple
cabal-version: >= 1.8
extra-source-files: README.md
2012-05-09 19:16:01 +04:00
library
exposed-modules: Options.Applicative,
2012-07-08 02:23:56 +04:00
Options.Applicative.Arrows,
Options.Applicative.Common,
2012-05-09 19:16:01 +04:00
Options.Applicative.Types,
Options.Applicative.Builder,
Options.Applicative.Utils,
2012-05-09 19:46:26 +04:00
Options.Applicative.Extra,
Options.Applicative.Help
2012-06-09 03:40:00 +04:00
build-depends: base == 4.*,
2012-05-09 19:16:01 +04:00
data-lens == 2.10.*,
transformers >= 0.2 && < 0.4
2012-05-10 00:51:49 +04:00
test-suite tests
type: exitcode-stdio-1.0
hs-source-dirs: tests
main-is: Tests.hs
2012-06-09 03:40:00 +04:00
build-depends: base == 4.*,
2012-05-10 00:51:49 +04:00
HUnit == 1.2.*,
2012-07-23 04:01:12 +04:00
optparse-applicative == 0.3.*,
2012-05-10 00:51:49 +04:00
test-framework == 0.6.*,
test-framework-hunit == 0.2.*,
test-framework-th-prime == 0.0.*