Safe Haskell | None |
---|---|
Language | Haskell98 |
This module contains functions to build a console program, that parses the command line (and a configuration file), divides it into commands, options and non-options, and executes the corresponding action from a tree of available commands.
These commands can be constructed using the module System.Console.Command.
- single :: (MonadIO m, Applicative m) => Commands m -> m ()
- interactive :: (MonadIO m, MonadException m, Applicative m) => Commands m -> m ()
- showUsage :: MonadIO m => Commands n -> m ()
Using a command tree to construct a program
single :: (MonadIO m, Applicative m) => Commands m -> m () Source
Load the configuration file (if present), and run the command given on the command line. Settings on the command line override the configuration file.
You may use this function, applied to your tree of available commands,
as your main
function.
interactive :: (MonadIO m, MonadException m, Applicative m) => Commands m -> m () Source
Start an interactive session. Arguments to the program are ignored; instead, the user may repeatedly enter a command, possibly with options, which will be executed.
Configuration file
The configuration file is assumed to be in the user's home directory, and to be named ".foobar/config", where "foobar" is the name of the root of the command tree (usually the name of the program).
Settings in this file are of the form
option-name=option-value
, see the documentation of the package fez-conf for details. The format of
the "option-value" part depends on the type of the option argument; see
System.Console.Argument.
Sections can be defined for settings applying to a single command,
using the name of a command, enclosed in square brackets, as section header:
[command1]
option-for-command1=true
.