clap

Command-Line Argument Parsing, imperative style with a consumption mechanism
README

Clap is a library for command-line argument parsing.
Clap works by directly consuming arguments in an imperative way.
Traditionally, argument parsing in OCaml is done by first defining
a specification (an OCaml value defining the types of arguments),
and then parsing from this specification.
The "impure" approach of Clap skips the need to define a specification
and results in code which is quite simple in practice,
with limited boilerplate.

Clap does construct a specification internally as arguments are parsed.
It uses it to generate the --help, following usual man page conventions.

Installation

Clap is available as an opam package:

opam install clap

To use it, add clap as a dependency in your dune file.

API Documentation

See src/clap.mli.

Example

See demo/demo.ml.

The Two Rules

One limitation of Clap is that you have to follow two rules which are not enforced
by typing:

  • read named arguments before unnamed arguments;

  • call Clap.close before actually using arguments.

There are exceptions to these rules.

  • You can read a named argument after an unnamed argument if you are ok that
    the named argument cannot appear before the unnamed argument.
    For instance, if the unnamed argument is a subcommand name and the named argument
    only exists for this subcommand, you can read the command name first and then
    decide whether or not to read the named argument. Users will not be able to
    specify the named argument before the command name but this behavior is usually ok
    for subcommands.

  • If an argument cannot be invalid, i.e. it is not mandatory and all strings
    are valid values for it, then you can use its value before calling Clap.close.

Install
Maintainers
Sources
0.2.0.tar.gz
md5=b53056ea9e9552512c1a5be6c4b4fd55
sha512=a62858cf4847422aa2a8279dbacff2a6cfac600a301f271ca82dffd4a52b73d167fcc88721c5399e116ee0a033088b62c6825972736ebefd6e5bd02abb429ea8
Dependencies
odoc
with-doc
ocaml
>= "4.07"
dune
>= "2.7"
Reverse Dependencies
doi2bib
< "0.3.0"