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 -> ...)
type ('main_in, 'main_out) t('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
val string : string parseval int : int parseval float : float parseval date : Core.Date.t parseval sexp : Core.Sexp.t parseflags
module Flag : sig ... endval no_arg : [ `Present | `Absent ] Flag.tval no_arg_bool : bool Flag.tval capture_remaining_command_line : string list option Flag.tanonymous arguments
module Anons : sig ... endval zero : unit Anons.tvarious combinators
val empty : unit ‑> ('a, 'a) tval const : 'a ‑> ('a ‑> 'm, 'm) tval either : string ‑> ('a option ‑> 'b, 'a option ‑> 'a option ‑> 'b) tspec1 ++ spec2 composes command-line specifications spec1 and
spec2. Parameters specified by spec1 will come before those
specified by spec2 in the eventual main function.
val step : ('m1 ‑> 'm2) ‑> ('m1, 'm2) tstep 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
val cmd : summary:string ‑> ?readme:(unit ‑> string) ‑> ?autocomplete:Deprecated_command.Autocomplete.t ‑> ?global_flags:unit Deprecated_command.Flag.t list ‑> ('main, unit) t ‑> 'main ‑> Deprecated_command.t