This repository has been archived by the owner on Feb 17, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathoptions.cabal
140 lines (124 loc) · 3.19 KB
/
options.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
128
129
130
131
132
133
134
135
136
137
138
139
140
name: options
version: 1.2.1.1
license: MIT
license-file: license.txt
author: John Millikin <[email protected]>
maintainer: John Millikin <[email protected]>
build-type: Simple
cabal-version: >= 1.8
category: Console
stability: stable
homepage: https://john-millikin.com/software/haskell-options/
synopsis: A powerful and easy-to-use command-line option parser.
description:
The @options@ package lets library and application developers easily work
with command-line options.
.
The following example is a full program that can accept two options,
@--message@ and @--quiet@:
.
@
import Control.Applicative
import Options
.
data MainOptions = MainOptions
  { optMessage :: String
  , optQuiet :: Bool
  }
.
instance 'Options' MainOptions where
  defineOptions = pure MainOptions
  \<*\> simpleOption \"message\" \"Hello world!\"
  \"A message to show the user.\"
  \<*\> simpleOption \"quiet\" False
  \"Whether to be quiet.\"
.
main :: IO ()
main = runCommand $ \\opts args -> do
  if optQuiet opts
  then return ()
  else putStrLn (optMessage opts)
@
.
>$ ./hello
>Hello world!
>$ ./hello --message='ciao mondo'
>ciao mondo
>$ ./hello --quiet
>$
.
In addition, this library will automatically create documentation options
such as @--help@ and @--help-all@:
.
>$ ./hello --help
>Help Options:
> -h, --help
> Show option summary.
> --help-all
> Show all help options.
>
>Application Options:
> --message :: text
> A message to show the user.
> default: "Hello world!"
> --quiet :: bool
> Whether to be quiet.
> default: false
extra-source-files:
cbits/hoehrmann_utf8.c
cbits/utf8.c
source-repository head
type: git
location: https://john-millikin.com/code/haskell-options/
source-repository this
type: git
location: https://john-millikin.com/code/haskell-options/
tag: haskell-options_1.2.1.1
library
ghc-options: -Wall -O2
cc-options: -Wall
hs-source-dirs: lib
if !os(windows) && impl(ghc < 7.2)
cpp-options: -DOPTIONS_ENCODING_UTF8
c-sources: cbits/utf8.c
build-depends:
bytestring >= 0.9
if impl(ghc > 7.4)
ghc-options: -fwarn-unsafe
build-depends:
base >= 4.1 && < 5.0
, containers >= 0.1
, monads-tf >= 0.1
, transformers >= 0.2
exposed-modules:
Options
other-modules:
Options.Help
Options.Tokenize
Options.Types
Options.Util
test-suite options_tests
type: exitcode-stdio-1.0
main-is: OptionsTests.hs
ghc-options: -Wall -O2
cc-options: -Wall
hs-source-dirs: lib,tests
if !os(windows) && impl(ghc < 7.2)
cpp-options: -DOPTIONS_ENCODING_UTF8
c-sources: cbits/utf8.c
build-depends:
bytestring >= 0.9
build-depends:
base >= 4.0 && < 5.0
, chell >= 0.4 && < 0.5
, chell-quickcheck >= 0.2 && < 0.3
, containers >= 0.1
, monads-tf >= 0.1
, transformers >= 0.2
other-modules:
OptionsTests.Api
OptionsTests.Help
OptionsTests.OptionTypes
OptionsTests.StringParsing
OptionsTests.Tokenize
OptionsTests.Util