cmdtheline-0.2.3: Declarative command-line option parsing and documentation library.
CmdTheLine aims to remove tedium from the definition of command-line programs, producing usage and help with little effort.
The inspiration was found in Daniel Bunzli's http://erratique.ch/software/cmdliner library.
CmdTheLine uses applicative functors to provide a declarative, compositional mechanism for defining command-line programs by lifting regular Haskell functions over argument parsers.
A tutorial can be found at http://elifrey.com/2012/07/23/CmdTheLine-Tutorial/.
Suggestions, comments, and bug reports are appreciated. Please see the bug and issue tracker at http://github.com/eli-frey/cmdtheline.
Changes since 0.1:
- More type safety: Types in CmdTheLine.Arg have been made more explicit to
disalow unwanted behavior. Positional argument information and optional
argument information are distinguished from each other. As well
Arg
s must be transformed intoTerm
before use, as some operations make since to perform onArg
but not onTerm
. - ArgVal has only one method:
parser
andpp
have been fused into a tuple, so that instantiation ofArgVal
can be simplified for all parties. - Err is an instance of MonadIO: The
Err
monad now supports IO action. - File and Directory path validation: Taking advantage of new
Err
capabilities, the library provides new functions for validatingString
s inside ofTerm
s as being valid/existent file/directory paths.
Changes since 0.2.0:
- Test friendly
unwrap
functions: To allow the testing of terms, there are now two new functions exported with System.Console.CmdTheLine.Term,unwrap
andunwrapChoice
. As well a datatype representing cause of early exit,EvalExit
is exported.
Changes since 0.2.1
- Added adapter for interfacing with Getopt in module
CmdTheLine
.