Module Core_kernel__Command
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 ... endmodule Deprecated : sig ... endDeprecatedshould be used only byDeprecated_command. At some point it will go away.