mirror of
https://github.com/c-cube/linol.git
synced 2025-12-07 11:45:43 -05:00
2 lines
14 KiB
HTML
2 lines
14 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Term (cmdliner.Cmdliner.Term)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 3.1.0"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../../index.html">Index</a> » <a href="../../index.html">cmdliner</a> » <a href="../index.html">Cmdliner</a> » Term</nav><header class="odoc-preamble"><h1>Module <code><span>Cmdliner.Term</span></code></h1><p>Terms.</p><p>A term made of terms referring to <a href="../Arg/index.html#argterms" title="argterms">command line arguments</a> implicitly defines a command line syntax fragment. Terms are associated to command values <a href="../Cmd/index.html#type-t"><code>Cmd.t</code></a> which are <a href="../Cmd/index.html#eval" title="eval">evaluated</a> to eventually produce an <a href="../Cmd/Exit/index.html#type-code" title="Cmd.Exit.code">exit code</a>.</p><p>Nowadays terms are best defined using the <a href="Syntax/index.html"><code>Cmdliner.Term.Syntax</code></a>. See examples in the <a href="../../cookbook.html#blueprints" title="blueprints">blueprints</a>.</p></header><div class="odoc-tocs"><nav class="odoc-toc odoc-local-toc"><ul><li><a href="#terms">Terms</a></li><li><a href="#interacting-with--evaluation">Interacting with <code>Cmd.t</code> evaluation</a></li></ul></nav></div><div class="odoc-content"><h2 id="terms"><a href="#terms" class="anchor"></a>Terms</h2><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> <span>+'a t</span></span></code></div><div class="spec-doc"><p>The type for terms evaluating to values of type <code>'a</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-const"><a href="#val-const" class="anchor"></a><code><span><span class="keyword">val</span> const : <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>const v</code> is a term that evaluates to <code>v</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-app"><a href="#val-app" class="anchor"></a><code><span><span class="keyword">val</span> app : <span><span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span class="type-var">'b</span>)</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>app f v</code> is a term that evaluates to the result applying the evaluation of <code>v</code> to the one of <code>f</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-map"><a href="#val-map" class="anchor"></a><code><span><span class="keyword">val</span> map : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span class="type-var">'b</span>)</span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>map f t</code> is <code>app (const f) t</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-product"><a href="#val-product" class="anchor"></a><code><span><span class="keyword">val</span> product : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span><span class="type-var">'b</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span>(<span class="type-var">'a</span> * <span class="type-var">'b</span>)</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>product t0 t1</code> is <code>app (app (map (fun x y -> (x, y)) t0) t1)</code></p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-($)"><a href="#val-($)" class="anchor"></a><code><span><span class="keyword">val</span> ($) : <span><span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span class="type-var">'b</span>)</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>f $ v</code> is <a href="#val-app"><code>app</code></a><code> f v</code>.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Syntax"><a href="#module-Syntax" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Syntax/index.html">Syntax</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p><code>let</code> operators.</p></div></div><h2 id="interacting-with--evaluation"><a href="#interacting-with--evaluation" class="anchor"></a>Interacting with <a href="../Cmd/index.html#type-t"><code>Cmd.t</code></a> evaluation</h2><p>These special terms allow to interact with the <a href="../Cmd/index.html#eval_low" title="eval_low">low-level evaluation process</a> performed on commands.</p><div class="odoc-spec"><div class="spec value anchored" id="val-term_result"><a href="#val-term_result" class="anchor"></a><code><span><span class="keyword">val</span> term_result : <span><span class="optlabel">?usage</span>:bool <span class="arrow">-></span></span> <span><span><span><span>(<span class="type-var">'a</span>, <span>[ <span>`Msg of string</span> ]</span>)</span> <a href="../../../ocaml/Stdlib/index.html#type-result">result</a></span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>term_result</code> is such that:</p><ul><li><code>term_result ~usage (Ok v)</code> <a href="../Cmd/index.html#val-eval_value" title="Cmd.eval_value">evaluates</a> to <code>Ok (`Ok v)</code>.</li><li><code>term_result ~usage (Error (`Msg e))</code> <a href="../Cmd/index.html#val-eval_value" title="Cmd.eval_value">evaluates</a> to <code>Error `Term</code> with the error message <code>e</code> and usage shown according to <code>usage</code> (defaults to <code>false</code>)</li></ul><p>See also <a href="#val-term_result'"><code>term_result'</code></a>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-term_result'"><a href="#val-term_result'" class="anchor"></a><code><span><span class="keyword">val</span> term_result' : <span><span class="optlabel">?usage</span>:bool <span class="arrow">-></span></span> <span><span><span><span>(<span class="type-var">'a</span>, string)</span> <a href="../../../ocaml/Stdlib/index.html#type-result">result</a></span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>term_result'</code> is like <a href="#val-term_result"><code>term_result</code></a> but with a <code>string</code> error case.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-cli_parse_result"><a href="#val-cli_parse_result" class="anchor"></a><code><span><span class="keyword">val</span> cli_parse_result : <span><span><span><span>(<span class="type-var">'a</span>, <span>[ <span>`Msg of string</span> ]</span>)</span> <a href="../../../ocaml/Stdlib/index.html#type-result">result</a></span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>cli_parse_result</code> is such that:</p><ul><li><code>cli_parse_result (Ok v)</code> <a href="../Cmd/index.html#val-eval_value" title="Cmd.eval_value">evaluates</a> <code>Ok (`Ok v)).} {- [cli_parse_result (Error (`Msg e))]</code> <a href="../Cmd/index.html#val-eval_value" title="Cmd.eval_value">evaluates</a> <code>Error `Parse</code>.</li></ul><p>See also <a href="#val-cli_parse_result'"><code>cli_parse_result'</code></a>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-cli_parse_result'"><a href="#val-cli_parse_result'" class="anchor"></a><code><span><span class="keyword">val</span> cli_parse_result' : <span><span><span><span>(<span class="type-var">'a</span>, string)</span> <a href="../../../ocaml/Stdlib/index.html#type-result">result</a></span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>cli_parse_result'</code> is like <a href="#val-cli_parse_result"><code>cli_parse_result</code></a> but with a <code>string</code> error case.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-main_name"><a href="#val-main_name" class="anchor"></a><code><span><span class="keyword">val</span> main_name : <span>string <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>main_name</code> is a term that evaluates to the main command name; that is the name of the tool.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-choice_names"><a href="#val-choice_names" class="anchor"></a><code><span><span class="keyword">val</span> choice_names : <span><span>string list</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>choice_names</code> is a term that evaluates to the names of the commands that are children of the main command.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-with_used_args"><a href="#val-with_used_args" class="anchor"></a><code><span><span class="keyword">val</span> with_used_args : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span>(<span class="type-var">'a</span> * <span>string list</span>)</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>with_used_args t</code> is a term that evaluates to <code>t</code> tupled with the arguments from the command line that where used to evaluate <code>t</code>.</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-ret"><a href="#type-ret" class="anchor"></a><code><span><span class="keyword">type</span> <span>'a ret</span></span><span> = </span><span>[ </span></code><ol><li id="type-ret.Help" class="def variant constructor anchored"><a href="#type-ret.Help" class="anchor"></a><code><span>| </span><span>`Help <span class="keyword">of</span> <a href="../Manpage/index.html#type-format">Manpage.format</a> * <span>string option</span></span></code></li><li id="type-ret.Error" class="def variant constructor anchored"><a href="#type-ret.Error" class="anchor"></a><code><span>| </span><span>`Error <span class="keyword">of</span> bool * string</span></code></li><li id="type-ret.Ok" class="def variant constructor anchored"><a href="#type-ret.Ok" class="anchor"></a><code><span>| </span><span>`Ok <span class="keyword">of</span> <span class="type-var">'a</span></span></code></li></ol><code><span> ]</span></code></div><div class="spec-doc"><p>The type for command return values. See <a href="#val-ret"><code>ret</code></a>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-ret"><a href="#val-ret" class="anchor"></a><code><span><span class="keyword">val</span> ret : <span><span><span><span class="type-var">'a</span> <a href="#type-ret">ret</a></span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>ret v</code> is a term whose evaluation depends on the case to which <code>v</code> evaluates. With :</p><ul><li><code>`Ok v</code>, it evaluates to <code>v</code>.</li><li><code>`Error (usage, e)</code>, the evaluation fails and <code>Cmdliner</code> prints the error <code>e</code> and the term's usage if <code>usage</code> is <code>true</code>.</li><li><code>`Help (format, name)</code>, the evaluation fails and <code>Cmdliner</code> prints a manpage in format <code>format</code>. If <code>name</code> is <code>None</code> this is the the main command's manpage. If <code>name</code> is <code>Some c</code> this is the man page of the subcommand <code>c</code> of the main command.</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-env"><a href="#val-env" class="anchor"></a><code><span><span class="keyword">val</span> env : <span><span>(<span>string <span class="arrow">-></span></span> <span>string option</span>)</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>env</code> is the <code>env</code> argument given to <a href="../Cmd/index.html#eval" title="eval">command evaluation functions</a>. If you need to refine the environment lookup done by Cmdliner's machinery you should use this rather than direct calls to <code>Sys.getenv_opt</code>.</p></div></div></div></body></html>
|