summaryrefslogtreecommitdiffstats
path: root/yesod/ghc-optparse-applicative.spec
blob: 2e537f4a6e822d4201a17ac5edba9ea8a3d7132d (plain)
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
# https://fedoraproject.org/wiki/Packaging:Haskell
# https://fedoraproject.org/wiki/PackagingDrafts/Haskell

%global pkg_name optparse-applicative

%global common_summary Utilities and combinators for parsing command line options

%global common_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 ()\
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\
>\
>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.

Name:           ghc-%{pkg_name}
Version:        0.5.2.1
Release:        1%{?dist}
Summary:        %{common_summary}

License:        BSD
URL:            http://hackage.haskell.org/package/%{pkg_name}
Source0:        http://hackage.haskell.org/packages/archive/%{pkg_name}/%{version}/%{pkg_name}-%{version}.tar.gz

BuildRequires:  ghc-Cabal-devel
BuildRequires:  ghc-rpm-macros
# Begin cabal-rpm deps:
BuildRequires:  ghc-process-devel
BuildRequires:  ghc-transformers-devel
# End cabal-rpm deps

%description
%{common_description}


%prep
%setup -q -n %{pkg_name}-%{version}


%build
%ghc_lib_build


%install
%ghc_lib_install


%ghc_devel_package

%ghc_devel_description


%ghc_devel_post_postun


%ghc_files LICENSE
%doc README.md


%changelog
* Wed Mar 20 2013 Fedora Haskell SIG <haskell@lists.fedoraproject.org>
- spec file generated by cabal-rpm-0.7.0