options: A powerful and easy-to-use command-line option parser.

[ console, library, mit ] [ Propose Tags ]

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

Modules

[Index]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1, 0.1.1, 1.0, 1.1, 1.2, 1.2.1, 1.2.1.1, 1.2.1.2
Dependencies base (>=4.1 && <5.0), bytestring (>=0.9), containers (>=0.1), monads-tf (>=0.1), transformers (>=0.2) [details]
License MIT
Author John Millikin <john@john-millikin.com>
Maintainer John Millikin <john@john-millikin.com>
Category Console
Home page https://john-millikin.com/software/haskell-options/
Source repo head: git clone https://john-millikin.com/code/haskell-options/
this: git clone https://john-millikin.com/code/haskell-options/(tag haskell-options_1.2.1.1)
Uploaded by JohnMillikin at 2015-01-13T06:05:42Z
Distributions Arch:1.2.1.1, Debian:1.2.1.1, LTSHaskell:1.2.1.2, NixOS:1.2.1.2, Stackage:1.2.1.2
Reverse Dependencies 10 direct, 27 indirect [details]
Downloads 12573 total (35 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2015-01-13 [all 1 reports]