-
Notifications
You must be signed in to change notification settings - Fork 0
/
optparse-applicative.cabal
127 lines (125 loc) · 4.86 KB
/
optparse-applicative.cabal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
name: optparse-applicative
version: 0.9.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
  \<$\> 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: [email protected]
copyright: (c) 2012 Paolo Capriotti <[email protected]>
category: System
build-type: Simple
cabal-version: >= 1.8
extra-source-files: CHANGELOG.md
README.md
tests/Examples/Alternatives.hs
tests/Examples/Cabal.hs
tests/Examples/Commands.hs
tests/Examples/Hello.hs
tests/Examples/Formatting.hs
tests/alt.err.txt
tests/cabal.err.txt
tests/commands.err.txt
tests/commands_header.err.txt
tests/commands_header_full.err.txt
tests/hello.err.txt
tests/formatting.err.txt
tests/nested.err.txt
homepage: https://github.com/pcapriotti/optparse-applicative
bug-reports: https://github.com/pcapriotti/optparse-applicative/issues
source-repository head
type: git
location: https://github.com/pcapriotti/optparse-applicative.git
library
exposed-modules: Options.Applicative,
Options.Applicative.Arrows,
Options.Applicative.BashCompletion,
Options.Applicative.Builder,
Options.Applicative.Builder.Completer,
Options.Applicative.Builder.Internal,
Options.Applicative.Common,
Options.Applicative.Extra,
Options.Applicative.Help,
Options.Applicative.Help.Pretty,
Options.Applicative.Help.Chunk,
Options.Applicative.Help.Core,
Options.Applicative.Types,
Options.Applicative.Internal
ghc-options: -Wall
build-depends: base == 4.*,
transformers >= 0.2 && < 0.5,
transformers-compat == 0.3.*,
process >= 1.0 && < 1.3,
ansi-wl-pprint >= 0.6 && < 0.7
test-suite tests
type: exitcode-stdio-1.0
hs-source-dirs: tests
main-is: Tests.hs
ghc-options: -Wall -fno-warn-orphans
build-depends: base == 4.*,
HUnit == 1.2.*,
optparse-applicative,
QuickCheck >= 2.6 && < 2.8,
test-framework >= 0.6 && < 0.9,
test-framework-hunit >= 0.2 && < 0.4,
test-framework-quickcheck2 == 0.3.*,
test-framework-th-prime == 0.0.*