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

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

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 && <4.8), 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>
Revised Revision 1 made by HerbertValerioRiedel at 2014-12-29T11:22:45Z
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)
Uploaded by JohnMillikin at 2014-05-17T22:47:39Z
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 (33 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Successful builds reported [all 1 reports]