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 into Term
before use, as some operations make since to
perform on Arg
but not on Term
.
ArgVal has only one method: parser
and pp
have been fused into a tuple, so
that instantiation of ArgVal
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 validating String
s
inside of Term
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
and unwrapChoice
. As well a datatype representing cause of early exit,
EvalExit
is exported.
Changes since 0.2.1