module CLISubCommand:sig
..end
typecli_parsing_t =
(Arg.key * Arg.spec * Arg.doc) list * Arg.anon_fun
type'a
cli_parsing_post_t =unit -> 'a
type'a
main_t =ctxt:OASISContext.t -> 'a
type'a
run_t =unit -> cli_parsing_t * 'a main_t
type
t = {
|
scmd_name : |
(* |
Name of the subcommand, used to call it
| *) |
|
scmd_synopsis : |
(* |
Short description of the subcommnad, displayed when doing a summary
of the available subcommands
| *) |
|
scmd_help : |
(* |
Long description of the subcommand, displayed when showing help of the
subcommand.
It can contains variable substitution as defined in
| *) |
|
scmd_usage : |
(* | Arg usage text | *) |
|
scmd_deprecated : |
(* |
Is this subcommand deprecated.
| *) |
|
scmd_run : |
(* |
Generate the specs and a main function.
| *) |
val default_anon : Arg.anon_fun
val default_fspecs : unit -> cli_parsing_t * unit cli_parsing_post_t
OASISContext.fspecs
val make_run : (unit -> cli_parsing_t * 'a cli_parsing_post_t) ->
('a -> 'b) main_t -> 'b run_t
make_run fspecs main
Create a run_t
by combining argument parsing with
the main function. The goal is to make main
not use global variable and
create what is need to store them in fspecs. This allow to make the whole
subcommand invocation thread safe.val register : ?usage:string ->
?deprecated:bool ->
OASISTypes.name ->
synopsis:string -> help:string -> unit run_t -> unit
register ~usage name synopsis help run
Create a subcommand using
provided data, see CLISubCommand.t
for their meanings. See CLISubCommand.make_run
to define a run
function. You can also see CLICommon
for useful functions to wrap your
run
.val find : OASISTypes.name -> t
val list_plugin : ?deprecated:bool -> unit -> PluginLoader.entry list
deprecated
to false to
filter out deprecated pluginval list_builtin : ?deprecated:bool -> unit -> t list
deprecated
to false to filter
out deprecated builtin.