Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

92 lines (85 sloc) 3.119 kB
name: hflags
version: 0.4
license: Apache-2.0
license-file: COPYING
author: Mihaly Barasz <klao@google.com>, Gergely Risko <gergely@risko.hu>
maintainer: Gergely Risko <gergely@risko.hu>
build-type: Simple
cabal-version: >= 1.18
category: Console
stability: provisional
homepage: http://github.com/errge/hflags
bug-reports: http://github.com/errge/hflags/issues
synopsis: Command line flag parser, very similar to Google's gflags
description:
The @HFlags@ library supports easy definition of command line flags,
reimplementing the ideas from Google's @gflags@
(<http://code.google.com/p/gflags>).
.
Command line flags can be declared in any file at the toplevel,
using 'defineFlag'. At runtime, the actual values are assigned to
the toplevel @flags_name@ constants. Those can be used purely
throughout the program.
.
At the beginning of the @main@ function, @$initHFlags \"program
description\"@ has to be called to initialize the flags. All flags
will be initialized that are transitively reachable via imports from
@main@. This means, that any Haskell package can easily define
command line flags with @HFlags@. This feature is demonstrated by
<http://github.com/errge/hflags/blob/master/examples/ImportExample.hs>
and <http://github.com/errge/hflags/tree/master/examples/package>.
.
A simple example (more in the
<http://github.com/errge/hflags/tree/master/examples> directory):
.
@
\#!\/usr\/bin\/env runhaskell
.
&#x7b;-\# LANGUAGE TemplateHaskell \#-&#x7d;
.
import HFlags
.
'defineFlag' \"name\" \"Indiana Jones\" \"Who to greet.\"
'defineFlag' \"r:repeat\" (3 + 4 :: Int) \"Number of times to repeat the message.\"
.
main = do s <- $initHFlags \"Simple program v0.1\"
&#x20; sequence_ $ replicate flags_repeat greet
&#x20; putStrLn $ \"Your additional arguments were: \" ++ show s
&#x20; putStrLn $ \"Which is the same as: \" ++ show HFlags.arguments
&#x20; where
&#x20; greet = putStrLn $ \"Hello \" ++ flags_name ++ \", very nice to meet you!\"
@
.
At @initHFlags@ time, the library also tries to gather flags out of
environment variables. @HFLAGS_verbose=True@ is equivalent to
specify --verbose=True. This environment feature only works with
long options and the user has to specify a value even for Bools.
.
/Since version 0.2, you mustn't put the initHFlags in a parentheses with the program description. Just/ @$initHFlags@, /it's cleaner./
.
See <http://github.com/errge/hflags/tree/master/changelog> for recent changes.
extra-source-files:
examples/ComplexExample.hs
examples/ImportExample.hs
examples/SimpleExample.hs
examples/X/B.hs
examples/X/Y_Y/A.hs
examples/package/Tup.hs
examples/package/test/main.hs
examples/package/tup.cabal
BLOG.md
README.md
changelog
source-repository head
type: git
location: http://github.com/errge/hflags
library
default-language: Haskell2010
ghc-options: -Wall
build-depends:
base >= 4.6 && < 5
, containers >= 0.4
, template-haskell >= 2.8
, text >= 0.11
exposed-modules:
HFlags
Jump to Line
Something went wrong with that request. Please try again.