mirror of
https://github.com/ilyakooo0/optparse-applicative.git
synced 2024-11-23 14:43:25 +03:00
240e42e9c8
Created a `Builder.Internal` module for internal definitions used by the builders, and a `Builder.Arguments` module for all the builders dealing with arguments.
103 lines
3.8 KiB
Plaintext
103 lines
3.8 KiB
Plaintext
name: optparse-applicative
|
|
version: 0.4.1
|
|
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 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.
|
|
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
|
|
homepage: https://github.com/pcapriotti/optparse-applicative
|
|
bug-reports: https://github.com/pcapriotti/optparse-applicative/issues
|
|
|
|
library
|
|
exposed-modules: Options.Applicative,
|
|
Options.Applicative.Arrows,
|
|
Options.Applicative.BashCompletion,
|
|
Options.Applicative.Builder,
|
|
Options.Applicative.Builder.Arguments,
|
|
Options.Applicative.Builder.Completer,
|
|
Options.Applicative.Builder.Internal,
|
|
Options.Applicative.Common,
|
|
Options.Applicative.Extra,
|
|
Options.Applicative.Help,
|
|
Options.Applicative.Types,
|
|
Options.Applicative.Utils
|
|
other-modules: Options.Applicative.Internal
|
|
build-depends: base == 4.*,
|
|
transformers >= 0.2 && < 0.4,
|
|
process == 1.1.*
|
|
test-suite tests
|
|
type: exitcode-stdio-1.0
|
|
hs-source-dirs: tests
|
|
main-is: Tests.hs
|
|
build-depends: base == 4.*,
|
|
HUnit == 1.2.*,
|
|
optparse-applicative,
|
|
test-framework == 0.6.*,
|
|
test-framework-hunit == 0.2.*,
|
|
test-framework-th-prime == 0.0.*
|