cmdargs

System.Console.CmdArgs.Explicit

Contents

- Running command lines
- Constructing command lines
- Displaying help

Description

This module constructs command lines. You may either use the helper functions (`flagNone`, `flagOpt`, `mode` etc.) or construct the type directly. These types are intended to give all the necessary power to the person constructing a command line parser.

For people constructing simpler command line parsers, the module System.Console.CmdArgs.Implicit may be more appropriate.

As an example of a parser:

     arguments :: Mode [(String,String)]
     arguments = mode "explicit" [] "Explicit sample program" (flagArg (upd "file") "FILE")
         [flagOpt "world" ["hello","h"] (upd "world") "WHO" "World argument"
         ,flagReq ["greeting","g"] (upd "greeting") "MSG" "Greeting to give"
         ,flagHelpSimple (("help",""):)]
         where upd msg x v = Right $ (msg,x):v

And this can be invoked by:

     main = do
         x <- processArgs arguments
         if ("help","") `elem` xs then
             print $ helpText def arguments
          else
             print x

Groups: The `Group` structure allows flags/modes to be grouped for the purpose of displaying help. When processing command lines, the group structure is ignored.

Modes: The Explicit module allows multiple mode programs by placing additional modes in `modeGroupModes`. Every mode is allowed sub-modes, and thus multiple levels of mode may be created. Given a mode `x` with sub-modes `xs`, if the first argument corresponds to the name of a sub-mode, then that sub-mode will be applied. If not, then the arguments will be processed by mode `x`. Consequently, if you wish to force the user to explicitly enter a mode, simply give sub-modes, and leave `modeArgs` as `Nothing`. Alternatively, if you want one sub-mode to be selected by default, place all it's flags both in the sub-mode and the outer mode.

Synopsis

- module System.Console.CmdArgs.Explicit.Process
- module System.Console.CmdArgs.Explicit.Type
- flagHelpSimple :: (a -> a) -> Flag a
- flagHelpFormat :: (HelpFormat -> TextFormat -> a -> a) -> Flag a
- flagVersion :: (a -> a) -> Flag a
- flagsVerbosity :: (Verbosity -> a -> a) -> [Flag a]
- module System.Console.CmdArgs.Explicit.Help

# Running command lines

module System.Console.CmdArgs.Explicit.Process

# Constructing command lines

module System.Console.CmdArgs.Explicit.Type

flagHelpSimple :: (a -> a) -> Flag a

Create a help flag triggered by `-?`/`--help`.

flagHelpFormat :: (HelpFormat -> TextFormat -> a -> a) -> Flag a

Create a help flag triggered by `-?`/`--help`. The user may optionally modify help by specifying the format, such as:

     --help=all          - help for all modes
     --help=html         - help in HTML format
     --help=100          - wrap the text at 100 characters
     --help=100,one      - full text wrapped at 100 characters

flagVersion :: (a -> a) -> Flag a

Create a version flag triggered by `-V`/`--version`.

flagsVerbosity :: (Verbosity -> a -> a) -> [Flag a]

Create verbosity flags triggered by `-v`/`--verbose` and `-q`/`--quiet`

# Displaying help

module System.Console.CmdArgs.Explicit.Help