-
.
An option is a keyword alone or followed by an argument.
The types of keywords are: Unit
, Bool
, Set
, Clear
,
String
, Set_string
, Int
, Set_int
, Float
, Set_float
,
Tuple
, Symbol
, and Rest
.
Unit
, Set
and Clear
keywords take no argument. A Rest
keyword takes the remaining of the command line as arguments.
Every other keyword takes the following word on the command line
as argument.
Arguments not preceded by a keyword are called anonymous arguments.
cmd
is assumed to be the command name):cmd -flag
(a unit option)cmd -int 1
(an int option with argument 1
)cmd -string foobar
(a string option with argument "foobar"
)cmd -float 12.34
(a float option with argument 12.34
)cmd a b c
(three anonymous arguments: "a"
, "b"
, and "c"
)cmd a b -- c d
(two anonymous arguments and a rest option with
two arguments)| | Unit of (unit -> unit) | (* | Call the function with unit argument | *) |
| | Bool of (bool -> unit) | (* | Call the function with a bool argument | *) |
| | Set of bool Pervasives.ref | (* | Set the reference to true | *) |
| | Clear of bool Pervasives.ref | (* | Set the reference to false | *) |
| | String of (string -> unit) | (* | Call the function with a string argument | *) |
| | Set_string of string Pervasives.ref | (* | Set the reference to the string argument | *) |
| | Int of (int -> unit) | (* | Call the function with an int argument | *) |
| | Set_int of int Pervasives.ref | (* | Set the reference to the int argument | *) |
| | Float of (float -> unit) | (* | Call the function with a float argument | *) |
| | Set_float of float Pervasives.ref | (* | Set the reference to the float argument | *) |
| | Tuple of spec list | (* | Take several arguments according to the spec list | *) |
| | Symbol of string list * (string -> unit) | (* | Take one of the symbols as argument and call the function with the symbol | *) |
| | Rest of (string -> unit) | (* | Stop interpreting keywords and call the function with each remaining argument | *) |
Arg.parse speclist anon_fun usage_msg
parses the command line.
speclist
is a list of triples (key, spec, doc)
.
key
is the option keyword, it must start with a '-'
character.
spec
gives the option type and the function to call when this option
is found on the command line.
doc
is a one-line description of this option.
anon_fun
is called on anonymous arguments.
The functions in spec
and anon_fun
are called in the same order
as their arguments appear on the command line.
Arg.parse
exits the program, after printing
to standard error an error message as follows:usage_msg
doc
string.
Beware: options that have an empty doc
string will not be included in the
list.-
, include for example ("-", String anon_fun, doc)
in speclist
.
parse
recognizes two unit options, -help
and --help
,
which will print to standard output usage_msg
and the list of
options, and exit the program. You can override this behaviour
by specifying your own -help
and --help
options in speclist
.Arg.parse
, except that the speclist
argument is a reference
and may be updated during the parsing. A typical use for this feature
is to parse command lines of the form:options
where the list of options depends on the value of the subcommand argument.Arg.parse_argv ~current args speclist anon_fun usage_msg
parses
the array args
as if it were the command line. It uses and updates
the value of ~current
(if given), or Arg.current
. You must set
it before calling parse_argv
. The initial value of current
is the index of the program name (argument 0) in the array.
If an error occurs, Arg.parse_argv
raises Arg.Bad
with
the error message as argument. If option -help
or --help
is
given, Arg.parse_argv
raises Arg.Help
with the help message
as argument.Arg.parse_argv
, except that the speclist
argument is a
reference and may be updated during the parsing.
See Arg.parse_dynamic
.Arg.parse_argv
when the user asks for help.spec
or anon_fun
can raise Arg.Bad
with an error
message to reject invalid arguments.
Arg.Bad
is also raised by Arg.parse_argv
in case of an error.Arg.usage speclist usage_msg
prints to standard error
an error message that includes the list of valid options. This is
the same message that Arg.parse
prints in case of error.
speclist
and usage_msg
are the same as for Arg.parse
.Arg.usage
,
if provided with the same parameters.Symbol
arguments are aligned on the next line.Sys.argv
) of the argument being processed. You can
change this value, e.g. to force Arg.parse
to skip some arguments.
Arg.parse
uses the initial value of Arg.current
as the index of
argument 0 (the program name) and starts parsing arguments
at the next element.