Module Command

module Command: sig .. end
purely functional command line parsing

module Spec: sig .. end
composable command-line specifications
type t 
commands which can be combined into a hierarchy of subcommands
val basic : summary:string ->
?readme:(unit -> string) ->
('main, unit -> unit) Spec.t -> 'main -> t
basic ~summary ?readme spec main is a basic command that executes a function main which is passed parameters parsed from the command line according to spec. summary is to contain a short one-line description of its behavior. readme is to contain any longer description of its behavior that will go on that commands' help screen.
val group : summary:string ->
?readme:(unit -> string) -> (string * t) list -> t
group ~summary subcommand_alist is a compound command with named subcommands, as found in subcommand_alist. summary is to contain a short one-line description of the command group. readme is to contain any longer description of its behavior that will go on that command's help screen.

NOTE: subcommand names containing underscores will be rejected. Use dashes instead.

val run : ?version:string ->
?build_info:string ->
?argv:string list ->
?extend:(string list -> string list) -> t -> unit
Run a command against Sys.argv, or argv if it is specified.

extend can be used to add extra command line arguments to basic subcommands of the command. extend will be passed the (fully expanded) path to a command, and its output will be appended to the list of arguments being processed. For example, suppose a program like this is compiled into exe:

        let bar = Command.basic ...
        let foo = Command.group ~summary:... ["bar", bar]
        let main = Command.group ~summary:... ["foo", foo]
        Command.run ~extend:(fun _ -> ["-baz"]) main
      

Then if a user ran exe f b, extend would be passed ["foo"; "bar"] and "-baz" would be appended to the command line for processing by bar. This can be used to add a default flags section to a user config file.

module Deprecated: sig .. end
Deprecated should be used only by Core_extended.Deprecated_command.