package reason
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=df2544606bc824a67082e2011826e7a1cde7af0ccb5ba457e937fe018c3ce7e4
sha512=ad6606defad2dcc2456b42e77eb77d5aee02ccda7ad32c313dcbb2c5d25953ff0c80719a3c6ef30b8443d8e6105b46aacdccc3607620c36ce8c8d0537574c21c
doc/reason.cmdliner/Vendored_cmdliner/Term/index.html
Module Vendored_cmdliner.TermSource
Terms.
A term is evaluated by a program to produce a result, which can be turned into an exit status. A term made of terms referring to command line arguments implicitly defines a command line syntax.
Terms
The type for terms evaluating to values of type 'a.
f $ v is a term that evaluates to the result of applying the evaluation of v to the one of f.
product t0 t1 is app (app (map (fun x y -> (x, y)) t0) t1)
let operators.
Interacting with Cmdliner's evaluation
term_result ~usage t evaluates to
`Ok viftevaluates toOk v`Error `Termwith the error messageeand usage shown according tousage(defaults tofalse), iftevaluates toError (`Msg e).
See also term_result'.
term_result' is like term_result but with a string error case.
cli_parse_result t is a term that evaluates to:
`Ok viftevaluates toOk v.`Error `Parsewith the error messageeiftevaluates toError (`Msg e).
See also cli_parse_result'.
cli_parse_result' is like cli_parse_result but with a string error case.
main_name is a term that evaluates to the main command name; that is the name of the tool.
choice_names is a term that evaluates to the names of the commands that are children of the main command.
with_used_args t is a term that evaluates to t tupled with the arguments from the command line that where used to evaluate t.
type 'a ret = [ | `Help of Manpage.format * string option| `Error of bool * string| `Ok of 'a
]The type for command return values. See ret.
ret v is a term whose evaluation depends on the case to which v evaluates. With :
`Ok v, it evaluates tov.`Error (usage, e), the evaluation fails andCmdlinerprints the erroreand the term's usage ifusageistrue.`Help (format, name), the evaluation fails andCmdlinerprints a manpage in formatformat. IfnameisNonethis is the the main command's manpage. IfnameisSome cthis is the man page of the sub commandcof the main command.
Note. While not deprecated you are encouraged not use this API.
Deprecated Term evaluation interface
This interface is deprecated in favor of Cmdliner.Cmd. Follow the compiler deprecation warning hints to transition.
Term information
Term information defines the name and man page of a term. For simple evaluation this is the name of the program and its man page. For multiple term evaluation, this is the name of a command and its man page.
The type for exit status information.
exit_info ~docs ~doc min ~max describe the range of exit statuses from min to max (defaults to min). doc is the man page information for the statuses, defaults to "undocumented". docs is the title of the man page section in which the statuses will be listed, it defaults to Manpage.s_exit_status.
In doc the documentation markup language can be used with following variables:
$(status), the value ofmin.$(status_max), the value ofmax.- The variables mentioned in
info
default_exits is information for exit status exit_status_success added to default_error_exits.
default_error_exits is information for exit statuses exit_status_cli_error and exit_status_internal_error.
The type for environment variable information.
env_info ~docs ~doc var describes an environment variable var. doc is the man page information of the environment variable, defaults to "undocumented". docs is the title of the man page section in which the environment variable will be listed, it defaults to Cmdliner.Manpage.s_environment.
In doc the documentation markup language can be used with following variables:
$(env), the value ofvar.- The variables mentioned in
info
The type for term information.
val info :
?man_xrefs:Manpage.xref list ->
?man:Manpage.block list ->
?envs:env_info list ->
?exits:exit_info list ->
?sdocs:string ->
?docs:string ->
?doc:string ->
?version:string ->
string ->
infoinfo sdocs man docs doc version name is a term information such that:
nameis the name of the program or the command.versionis the version string of the program, ignored for commands.docis a one line description of the program or command used for theNAMEsection of the term's man page. For commands this description is also used in the list of commands of the main term's man page.docs, only for commands, the title of the section of the main term's man page where it should be listed (defaults toManpage.s_commands).sdocsdefines the title of the section in which the standard--helpand--versionarguments are listed (defaults toManpage.s_options).exitsis a list of exit statuses that the term evaluation may produce.envsis a list of environment variables that influence the term's evaluation.manis the text of the man page for the term.man_xrefsare cross-references to other manual pages. These are used to generate aManpage.s_see_alsosection.
doc, man, envs support the documentation markup language in which the following variables are recognized:
$(tname)the term's name.$(mname)the main term's name.
Evaluation
The type for evaluation results.
`Ok v, the term evaluated successfully andvis the result.`Version, the version string of the main term was printed on the help formatter.`Help, man page about the term was printed on the help formatter.`Error `Parse, a command line parse error occurred and was reported on the error formatter.`Error `Term, a term evaluation error occurred and was reported on the error formatter (seeTerm.ret').`Error `Exn, an exceptionewas caught and reported on the error formatter (see the~catchparameter ofeval).
val eval :
?help:Format.formatter ->
?err:Format.formatter ->
?catch:bool ->
?env:(string -> string option) ->
?argv:string array ->
('a t * info) ->
'a resulteval help err catch argv (t,i) is the evaluation result of t with command line arguments argv (defaults to Sys.argv).
If catch is true (default) uncaught exceptions are intercepted and their stack trace is written to the err formatter.
help is the formatter used to print help or version messages (defaults to Format.std_formatter). err is the formatter used to print error messages (defaults to Format.err_formatter).
env is used for environment variable lookup, the default uses Sys.getenv.
val eval_choice :
?help:Format.formatter ->
?err:Format.formatter ->
?catch:bool ->
?env:(string -> string option) ->
?argv:string array ->
('a t * info) ->
('a t * info) list ->
'a resulteval_choice help err catch argv (t,i) choices is like eval except that if the first argument on the command line is not an option name it will look in choices for a term whose information has this name and evaluate it.
If the command name is unknown an error is reported. If the name is unspecified the "main" term t is evaluated. i defines the name and man page of the program.
val eval_peek_opts :
?version_opt:bool ->
?env:(string -> string option) ->
?argv:string array ->
'a t ->
'a option * 'a resulteval_peek_opts version_opt argv t evaluates t, a term made of optional arguments only, with the command line argv (defaults to Sys.argv). In this evaluation, unknown optional arguments and positional arguments are ignored.
The evaluation returns a pair. The first component is the result of parsing the command line argv stripped from any help and version option if version_opt is true (defaults to false). It results in:
Some _if the command line would be parsed correctly given the partial knowledge int.Noneif a parse error would occur on the options oft
The second component is the result of parsing the command line argv without stripping the help and version options. It indicates what the evaluation would result in on argv given the partial knowledge in t (for example it would return `Help if there's a help option in argv). However in contrasts to eval and eval_choice no side effects like error reporting or help output occurs.
Note. Positional arguments can't be peeked without the full specification of the command line: we can't tell apart a positional argument from the value of an unknown optional argument.
Turning evaluation results into exit codes
Note. If you are using the following functions to handle the evaluation result of a term you should add default_exits to the term's information ~exits argument.
WARNING. You should avoid status codes strictly greater than 125 as those may be used by some shells.
exit_status_success is 0, the exit status for success.
exit_status_cli_error is 124, an exit status for command line parsing errors.
exit_status_internal_error is 125, an exit status for unexpected internal errors.
exit_status_of_result ~term_err r is an exit(3) status code determined from r as follows:
exit_status_successifris one of`Ok (),`Version,`Helpterm_errifris`Error `Term,term_errdefaults to1.exit_status_cli_errorifris`Error `Parseexit_status_internal_errorifris`Error `Exn
exit_status_of_status_result is like exit_status_of_result except for `Ok n where n is used as the status exit code.
exit ~term_err r is Stdlib.exit @@ exit_status_of_result ~term_err r