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 <john@john-millikin.com>
maintainer: John Millikin <john@john-millikin.com>
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
|