This module is a wrapper around Command that allows you to do away with accumulators. Here's an example:
Fcommand.cmd ~summary:"Frobnicate something" Fcommand.( flag "-n" (required int) ~doc:"N number of times to frobnicate" ++ anon (args "item" string)) (fun n items -> ...)
('main_in, 'main_out) t
is a type of composable command-line
specifications.
Every combinator for building t
-values is polymorphic in
'main_out
. In the final specification expected by cmd
used
to construct a command, 'main_out
is specialized to unit
).
Various primitive specifications add parameters one at a time,
so the resulting type of main
is
arg1 -> ... -> argN -> unit
It may help to think of ('a, 'b) t
as a function space 'a -> 'b
embellished with extra information about how to parse command line,
including documentation about what various flags are for.
argument parsing
flags
anonymous arguments
various combinators
step
allows you to transform the way parameters are applied. For
example, if you want labelled arguments, you can do:
Fcommand.cmd ~summary:"..." Fcommand.( step (fun main x y z -> main ~x ~y ~z) ++ flag "-x" (optional string) ~doc:"..." ++ flag "-y" (required string) ~doc:"..." ++ flag "-z" (optional int) ~doc:"..." ) (fun ~x ~y ~z -> ... )
constructing the command we've specified