Module Core__.Command
include module type of Core_kernel.Command with module Command.Shape := Core__.Import.Command.Shape with module Deprecated := Core__.Import.Command.Deprecated
module Arg_type : sig ... endArgument types.
module Flag : sig ... endCommand-line flag specifications.
module Anons : sig ... endAnonymous command-line argument specification.
module Param : sig ... endCommand-line parameter specification.
module Let_syntax : sig ... end with type 'a t := 'a Param.tmodule Spec : sig ... endThe old interface for command-line specifications -- Do Not Use.
type ('main, 'result) basic_spec_command= summary:Core_kernel__.Import.string -> ?readme:(Core_kernel__.Import.unit -> Core_kernel__.Import.string) -> ('main, Core_kernel__.Import.unit -> 'result) Spec.t -> 'main -> t
val basic_spec : ('main, Core_kernel__.Import.unit) basic_spec_commandbasic_spec ~summary ?readme spec mainis a basic command that executes a functionmainwhich is passed parameters parsed from the command line according tospec.summaryis to contain a short one-line description of its behavior.readmeis to contain any longer description of its behavior that will go on that command's help screen.
type 'result basic_command= summary:Core_kernel__.Import.string -> ?readme:(Core_kernel__.Import.unit -> Core_kernel__.Import.string) -> (Core_kernel__.Import.unit -> 'result) Param.t -> t
val basic : Core_kernel__.Import.unit basic_commandSame general behavior as
basic_spec, but takes a command line specification built up usingParamsinstead ofSpec.
val group : summary:Core_kernel__.Import.string -> ?readme:(Core_kernel__.Import.unit -> Core_kernel__.Import.string) -> ?preserve_subcommand_order:Core_kernel__.Import.unit -> ?body:(path:Core_kernel__.Import.string Core_kernel__.Import.list -> Core_kernel__.Import.unit) -> (Core_kernel__.Import.string * t) Core_kernel__.Import.list -> tgroup ~summary subcommand_alistis a compound command with named subcommands, as found insubcommand_alist.summaryis to contain a short one-line description of the command group.readmeis 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.
bodyis called when no additional arguments are passed -- in particular, when no subcommand is passed. Itspathargument is the subcommand path by which the group command was reached.
val lazy_group : summary:Core_kernel__.Import.string -> ?readme:(Core_kernel__.Import.unit -> Core_kernel__.Import.string) -> ?preserve_subcommand_order:Core_kernel__.Import.unit -> ?body:(path:Core_kernel__.Import.string Core_kernel__.Import.list -> Core_kernel__.Import.unit) -> (Core_kernel__.Import.string * t) Core_kernel__.Import.list Core_kernel.Lazy.t -> tlazy_groupis the same asgroup, except that the list of subcommands may be generated lazily.
val exec : summary:Core_kernel__.Import.string -> ?readme:(Core_kernel__.Import.unit -> Core_kernel__.Import.string) -> ?child_subcommand:Core_kernel__.Import.string Core_kernel__.Import.list -> path_to_exe:[ `Absolute of Core_kernel__.Import.string | `Relative_to_argv0 of Core_kernel__.Import.string | `Relative_to_me of Core_kernel__.Import.string ] -> Core_kernel__.Import.unit -> texec ~summary ~path_to_exerunsexecon the executable atpath_to_exe. Ifpath_to_exeis`Absolute paththenpathis executed without any further qualification. If it is`Relative_to_me paththenFilename.dirname Sys.executable_name ^ "/" ^ pathis executed instead. All of the usual caveats aboutSys.executable_nameapply: specifically, it may only return an absolute path in Linux. On other operating systems it will returnSys.argv.(0). If it is`Relative_to_argv0 paththenSys.argv.(0) ^ "/" ^ pathis executed.The
child_subcommandargument allows referencing a subcommand one or more levels below the top-level of the child executable. It should not be used to pass flags or anonymous arguments to the child.Care has been taken to support nesting multiple executables built with Command. In particular, recursive help and autocompletion should work as expected.
NOTE: Non-Command executables can be used with this function but will still be executed when
help -recursiveis called or autocompletion is attempted (despite the fact that neither will be particularly helpful in this case). This means that if you have a shell script called "reboot-everything.sh" that takes no arguments and reboots everything no matter how it is called, you shouldn't use it withexec.Additionally, no loop detection is attempted, so if you nest an executable within itself,
help -recursiveand autocompletion will hang forever (although actually running the subcommand will work).
val of_lazy : t Core_kernel.Lazy.t -> tof_lazy thunkconstructs a lazy command that is forced only when necessary to run it or extract its shape.
val summary : t -> Core_kernel__.Import.stringExtracts the summary string for a command.
module Shape : sig ... endval exit : Core_kernel__.Import.int -> _call this instead of
Core.exitif in command-related code that you want to run in tests. For example, in the body ofCommand.Param.no_arg_abort
module Deprecated : sig ... endDeprecatedshould be used only byDeprecated_command. At some point it will go away.
val run : ?verbose_on_parse_error:bool -> ?version:string -> ?build_info:string -> ?argv:string list -> ?extend:(string list -> string list) -> t -> unitRuns a command against
Sys.argv, orargvif it is specified.extendcan be used to add extra command line arguments to basic subcommands of the command.extendwill 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 intoexe:let bar = Command.basic ___ let foo = Command.group ~summary:___ ["bar", bar] let main = Command.group ~summary:___ ["foo", foo] let () = Command.run ~extend:(fun _ -> ["-baz"]) mainThen if a user ran
exe f b,extendwould be passed["foo"; "bar"]and"-baz"would be appended to the command line for processing bybar. This can be used to add a default flags section to a user config file.verbose_on_parse_errorcontrols whether to print a line suggesting the user try the "-help" flag when an exception is raised while parsing the arguments. By default it is true.
module Path : sig ... endmodule Shape : sig ... endmodule Deprecated : sig ... endDeprecatedshould be used only byDeprecated_command. At some point it will go away.