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

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

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

- Options