UNPKG

@elliottcable/bs-cmdliner

Version:

Cmdliner — Declarative definition of command line interfaces for OCaml

1,157 lines (1,127 loc) 42.6 kB
'use strict'; var List = require("bs-platform/lib/js/list.js"); var Block = require("bs-platform/lib/js/block.js"); var Curry = require("bs-platform/lib/js/curry.js"); var $$Buffer = require("bs-platform/lib/js/buffer.js"); var Format = require("bs-platform/lib/js/format.js"); var Printf = require("bs-platform/lib/js/printf.js"); var $$String = require("bs-platform/lib/js/string.js"); var Caml_obj = require("bs-platform/lib/js/caml_obj.js"); var Caml_option = require("bs-platform/lib/js/caml_option.js"); var Caml_string = require("bs-platform/lib/js/caml_string.js"); var Cmdliner_base = require("./cmdliner_base.bs.js"); var Cmdliner_info = require("./cmdliner_info.bs.js"); var Caml_primitive = require("bs-platform/lib/js/caml_primitive.js"); var CamlinternalLazy = require("bs-platform/lib/js/camlinternalLazy.js"); var Cmdliner_manpage = require("./cmdliner_manpage.bs.js"); function rev_compare(n0, n1) { return Caml_obj.caml_compare(n1, n0); } function sorted_items_to_blocks(b, items) { var boilerplate = b !== undefined ? b : (function (param) { return undefined; }); var mk_block = function (sec, acc) { var match = Curry._1(boilerplate, sec); if (match !== undefined) { return /* tuple */[ sec, /* `Blocks */[ -595680602, /* :: */[ Caml_option.valFromOption(match), acc ] ] ]; } else { return /* tuple */[ sec, /* `Blocks */[ -595680602, acc ] ]; } }; if (items) { var match = items[0]; var _secs = /* [] */0; var _sec = match[0]; var _acc = /* :: */[ match[1], /* [] */0 ]; var _param = items[1]; while(true) { var param = _param; var acc = _acc; var sec = _sec; var secs = _secs; if (param) { var its = param[1]; var match$1 = param[0]; var it = match$1[1]; var sec$prime = match$1[0]; if (Caml_obj.caml_equal(sec$prime, sec)) { _param = its; _acc = /* :: */[ it, acc ]; continue ; } else { _param = its; _acc = /* :: */[ it, /* [] */0 ]; _sec = sec$prime; _secs = /* :: */[ mk_block(sec, acc), secs ]; continue ; } } else { return /* :: */[ mk_block(sec, acc), secs ]; } }; } else { return /* [] */0; } } function env_info_subst(subst, e, id) { if (id === "env") { return Curry._1(Printf.sprintf(/* Format */[ /* String_literal */Block.__(11, [ "$(b,", /* String */Block.__(2, [ /* No_padding */0, /* Char_literal */Block.__(12, [ /* ")" */41, /* End_of_format */0 ]) ]) ]), "$(b,%s)" ]), Cmdliner_manpage.$$escape(Cmdliner_info.env_var(e))); } else { return Curry._1(subst, id); } } function arg_info_subst(subst, a, id) { switch (id) { case "docv" : return Curry._1(Printf.sprintf(/* Format */[ /* String_literal */Block.__(11, [ "$(i,", /* String */Block.__(2, [ /* No_padding */0, /* Char_literal */Block.__(12, [ /* ")" */41, /* End_of_format */0 ]) ]) ]), "$(i,%s)" ]), Cmdliner_manpage.$$escape(Cmdliner_info.arg_docv(a))); case "env" : var match = Cmdliner_info.arg_env(a); if (match !== undefined) { return env_info_subst(subst, Caml_option.valFromOption(match), id); } else { return Curry._1(subst, id); } case "opt" : if (Cmdliner_info.arg_is_opt(a)) { return Curry._1(Printf.sprintf(/* Format */[ /* String_literal */Block.__(11, [ "$(b,", /* String */Block.__(2, [ /* No_padding */0, /* Char_literal */Block.__(12, [ /* ")" */41, /* End_of_format */0 ]) ]) ]), "$(b,%s)" ]), Cmdliner_manpage.$$escape(Cmdliner_info.arg_opt_name_sample(a))); } else { return Curry._1(subst, id); } default: return Curry._1(subst, id); } } function term_info_subst(ei, param) { switch (param) { case "mname" : var t = Cmdliner_info.eval_main(ei); return Curry._1(Printf.sprintf(/* Format */[ /* String_literal */Block.__(11, [ "$(b,", /* String */Block.__(2, [ /* No_padding */0, /* Char_literal */Block.__(12, [ /* ")" */41, /* End_of_format */0 ]) ]) ]), "$(b,%s)" ]), Cmdliner_manpage.$$escape(Cmdliner_info.term_name(t))); case "tname" : var t$1 = Cmdliner_info.eval_term(ei); return Curry._1(Printf.sprintf(/* Format */[ /* String_literal */Block.__(11, [ "$(b,", /* String */Block.__(2, [ /* No_padding */0, /* Char_literal */Block.__(12, [ /* ")" */41, /* End_of_format */0 ]) ]) ]), "$(b,%s)" ]), Cmdliner_manpage.$$escape(Cmdliner_info.term_name(t$1))); default: return undefined; } } function invocation($staropt$star, ei) { var sep = $staropt$star !== undefined ? $staropt$star : /* " " */32; var match = Cmdliner_info.eval_kind(ei); if (match >= 491021489) { return Curry._3(Printf.sprintf(/* Format */[ /* String */Block.__(2, [ /* No_padding */0, /* Char */Block.__(0, [/* String */Block.__(2, [ /* No_padding */0, /* End_of_format */0 ])]) ]), "%s%c%s" ]), Cmdliner_info.term_name(Cmdliner_info.eval_main(ei)), sep, Cmdliner_info.term_name(Cmdliner_info.eval_term(ei))); } else { var t = Cmdliner_info.eval_main(ei); return Cmdliner_manpage.$$escape(Cmdliner_info.term_name(t)); } } function plain_invocation(ei) { return invocation(undefined, ei); } function synopsis_pos_arg(a) { var v = Cmdliner_info.arg_docv(a); var v$1 = v === "" ? "ARG" : v; var v$2 = Curry._1(Printf.sprintf(/* Format */[ /* String_literal */Block.__(11, [ "$(i,", /* String */Block.__(2, [ /* No_padding */0, /* Char_literal */Block.__(12, [ /* ")" */41, /* End_of_format */0 ]) ]) ]), "$(i,%s)" ]), Cmdliner_manpage.$$escape(v$1)); var v$3 = Curry._1(Cmdliner_info.arg_is_req(a) ? Printf.sprintf(/* Format */[ /* String */Block.__(2, [ /* No_padding */0, /* End_of_format */0 ]), "%s" ]) : Printf.sprintf(/* Format */[ /* Char_literal */Block.__(12, [ /* "[" */91, /* String */Block.__(2, [ /* No_padding */0, /* Char_literal */Block.__(12, [ /* "]" */93, /* End_of_format */0 ]) ]) ]), "[%s]" ]), v$2); var match = Cmdliner_info.pos_len(Cmdliner_info.arg_pos(a)); if (match !== undefined) { var n = match; if (n !== 1) { var loop = function (_n, _acc) { while(true) { var acc = _acc; var n = _n; if (n <= 0) { return acc; } else { _acc = /* :: */[ v$3, acc ]; _n = n - 1 | 0; continue ; } }; }; return $$String.concat(" ", loop(n, /* [] */0)); } else { return v$3; } } else { return v$3 + "..."; } } function synopsis(ei) { var match = Cmdliner_info.eval_kind(ei); if (match !== -91404312) { var rev_cli_order = function (param, param$1) { return Cmdliner_info.rev_arg_pos_cli_order(param[0], param$1[0]); }; var add_pos = function (a, acc) { var match = Cmdliner_info.arg_is_opt(a); if (match) { return acc; } else { return /* :: */[ /* tuple */[ a, synopsis_pos_arg(a) ], acc ]; } }; var args = Cmdliner_info.term_args(Cmdliner_info.eval_term(ei)); var pargs = Curry._3(Cmdliner_info.Args[/* fold */13], add_pos, args, /* [] */0); var pargs$1 = List.sort(rev_cli_order, pargs); var pargs$2 = $$String.concat(" ", List.rev_map((function (prim) { return prim[1]; }), pargs$1)); return Curry._2(Printf.sprintf(/* Format */[ /* String_literal */Block.__(11, [ "$(b,", /* String */Block.__(2, [ /* No_padding */0, /* String_literal */Block.__(11, [ ") [$(i,OPTION)]... ", /* String */Block.__(2, [ /* No_padding */0, /* End_of_format */0 ]) ]) ]) ]), "$(b,%s) [$(i,OPTION)]... %s" ]), Cmdliner_manpage.$$escape(invocation(undefined, ei)), pargs$2); } else { return Curry._1(Printf.sprintf(/* Format */[ /* String_literal */Block.__(11, [ "$(b,", /* String */Block.__(2, [ /* No_padding */0, /* String_literal */Block.__(11, [ ") $(i,COMMAND) ...", /* End_of_format */0 ]) ]) ]), "$(b,%s) $(i,COMMAND) ..." ]), Cmdliner_manpage.$$escape(invocation(undefined, ei))); } } function cmd_docs(ei) { var match = Cmdliner_info.eval_kind(ei); if (match !== -91404312) { return /* [] */0; } else { var add_cmd = function (acc, t) { var cmd = Curry._1(Printf.sprintf(/* Format */[ /* String_literal */Block.__(11, [ "$(b,", /* String */Block.__(2, [ /* No_padding */0, /* Char_literal */Block.__(12, [ /* ")" */41, /* End_of_format */0 ]) ]) ]), "$(b,%s)" ]), Cmdliner_manpage.$$escape(Cmdliner_info.term_name(t))); return /* :: */[ /* tuple */[ Cmdliner_info.term_docs(t), /* `I */[ 73, /* tuple */[ cmd, Cmdliner_info.term_doc(t) ] ] ], acc ]; }; var by_sec_by_rev_name = function (param, param$1) { var c = Caml_obj.caml_compare(param[0], param$1[0]); if (c !== 0) { return c; } else { return Caml_obj.caml_compare(param$1[1][1][0], param[1][1][0]); } }; var cmds = List.fold_left(add_cmd, /* [] */0, Cmdliner_info.eval_choices(ei)); var cmds$1 = List.sort(by_sec_by_rev_name, cmds); return sorted_items_to_blocks(undefined, cmds$1); } } function arg_man_item_label(a) { if (Cmdliner_info.arg_is_pos(a)) { return Curry._1(Printf.sprintf(/* Format */[ /* String_literal */Block.__(11, [ "$(i,", /* String */Block.__(2, [ /* No_padding */0, /* Char_literal */Block.__(12, [ /* ")" */41, /* End_of_format */0 ]) ]) ]), "$(i,%s)" ]), Cmdliner_manpage.$$escape(Cmdliner_info.arg_docv(a))); } else { var fmt_name = function ($$var) { var match = Cmdliner_info.arg_opt_kind(a); if (typeof match === "number") { if (match !== 0) { return (function (n) { if (n.length > 2) { return Curry._2(Printf.sprintf(/* Format */[ /* String_literal */Block.__(11, [ "$(b,", /* String */Block.__(2, [ /* No_padding */0, /* String_literal */Block.__(11, [ ")=$(i,", /* String */Block.__(2, [ /* No_padding */0, /* Char_literal */Block.__(12, [ /* ")" */41, /* End_of_format */0 ]) ]) ]) ]) ]), "$(b,%s)=$(i,%s)" ]), Cmdliner_manpage.$$escape(n), Cmdliner_manpage.$$escape($$var)); } else { return Curry._2(Printf.sprintf(/* Format */[ /* String_literal */Block.__(11, [ "$(b,", /* String */Block.__(2, [ /* No_padding */0, /* String_literal */Block.__(11, [ ") $(i,", /* String */Block.__(2, [ /* No_padding */0, /* Char_literal */Block.__(12, [ /* ")" */41, /* End_of_format */0 ]) ]) ]) ]) ]), "$(b,%s) $(i,%s)" ]), Cmdliner_manpage.$$escape(n), Cmdliner_manpage.$$escape($$var)); } }); } else { return (function (n) { return Curry._1(Printf.sprintf(/* Format */[ /* String_literal */Block.__(11, [ "$(b,", /* String */Block.__(2, [ /* No_padding */0, /* Char_literal */Block.__(12, [ /* ")" */41, /* End_of_format */0 ]) ]) ]), "$(b,%s)" ]), Cmdliner_manpage.$$escape(n)); }); } } else { return (function (n) { if (n.length > 2) { return Curry._2(Printf.sprintf(/* Format */[ /* String_literal */Block.__(11, [ "$(b,", /* String */Block.__(2, [ /* No_padding */0, /* String_literal */Block.__(11, [ ")[=$(i,", /* String */Block.__(2, [ /* No_padding */0, /* String_literal */Block.__(11, [ ")]", /* End_of_format */0 ]) ]) ]) ]) ]), "$(b,%s)[=$(i,%s)]" ]), Cmdliner_manpage.$$escape(n), Cmdliner_manpage.$$escape($$var)); } else { return Curry._2(Printf.sprintf(/* Format */[ /* String_literal */Block.__(11, [ "$(b,", /* String */Block.__(2, [ /* No_padding */0, /* String_literal */Block.__(11, [ ") [$(i,", /* String */Block.__(2, [ /* No_padding */0, /* String_literal */Block.__(11, [ ")]", /* End_of_format */0 ]) ]) ]) ]) ]), "$(b,%s) [$(i,%s)]" ]), Cmdliner_manpage.$$escape(n), Cmdliner_manpage.$$escape($$var)); } }); } }; var v = Cmdliner_info.arg_docv(a); var $$var = v === "" ? "VAL" : v; var names = List.sort(Caml_obj.caml_compare, Cmdliner_info.arg_opt_names(a)); return $$String.concat(", ", List.rev_map(fmt_name($$var), names)); } } function arg_docs(errs, subst, buf, ei) { var by_sec_by_arg = function (a0, a1) { var c = Caml_primitive.caml_string_compare(Cmdliner_info.arg_docs(a0), Cmdliner_info.arg_docs(a1)); if (c !== 0) { return c; } else { var match = Cmdliner_info.arg_is_opt(a0); var match$1 = Cmdliner_info.arg_is_opt(a1); if (match) { if (match$1) { var key = function (names) { var k = List.hd(List.sort(rev_compare, names)); var k$1 = Cmdliner_base.lowercase(k); if (Caml_string.get(k$1, 1) === /* "-" */45) { return $$String.sub(k$1, 1, k$1.length - 1 | 0); } else { return k$1; } }; return Caml_primitive.caml_string_compare(key(Cmdliner_info.arg_opt_names(a0)), key(Cmdliner_info.arg_opt_names(a1))); } else { return -1; } } else if (match$1) { return 1; } else { return Caml_primitive.caml_string_compare(Cmdliner_base.lowercase(Cmdliner_info.arg_docv(a0)), Cmdliner_base.lowercase(Cmdliner_info.arg_docv(a1))); } } }; var keep_arg = function (a, acc) { if (Cmdliner_info.arg_is_pos(a) && (Cmdliner_info.arg_docv(a) === "" || Cmdliner_info.arg_doc(a) === "")) { return acc; } else { return /* :: */[ a, acc ]; } }; var args = Cmdliner_info.term_args(Cmdliner_info.eval_term(ei)); var args$1 = Curry._3(Cmdliner_info.Args[/* fold */13], keep_arg, args, /* [] */0); var args$2 = List.sort(by_sec_by_arg, args$1); var args$3 = List.rev_map((function (param) { var errs$1 = errs; var subst$1 = subst; var buf$1 = buf; var a = param; var or_env = function (value, a) { var match = Cmdliner_info.arg_env(a); if (match !== undefined) { var value$1 = value ? " or" : "absent "; return Curry._2(Printf.sprintf(/* Format */[ /* String */Block.__(2, [ /* No_padding */0, /* String_literal */Block.__(11, [ " $(b,", /* String */Block.__(2, [ /* No_padding */0, /* String_literal */Block.__(11, [ ") env", /* End_of_format */0 ]) ]) ]) ]), "%s $(b,%s) env" ]), value$1, Cmdliner_manpage.$$escape(Cmdliner_info.env_var(Caml_option.valFromOption(match)))); } else { return ""; } }; var match = Cmdliner_info.arg_absent(a); var absent; if (match) { var v = match[0]; var tag = v.tag | 0; var v$1 = tag === 250 ? v[0] : ( tag === 246 ? CamlinternalLazy.force_lazy_block(v) : v ); absent = v$1 === "" ? Curry._1(Printf.sprintf(/* Format */[ /* String */Block.__(2, [ /* No_padding */0, /* End_of_format */0 ]), "%s" ]), or_env(false, a)) : Curry._2(Printf.sprintf(/* Format */[ /* String_literal */Block.__(11, [ "absent=", /* String */Block.__(2, [ /* No_padding */0, /* String */Block.__(2, [ /* No_padding */0, /* End_of_format */0 ]) ]) ]), "absent=%s%s" ]), v$1, or_env(true, a)); } else { absent = "required"; } var match$1 = Cmdliner_info.arg_opt_kind(a); var optvopt = typeof match$1 === "number" ? "" : Curry._1(Printf.sprintf(/* Format */[ /* String_literal */Block.__(11, [ "default=", /* String */Block.__(2, [ /* No_padding */0, /* End_of_format */0 ]) ]), "default=%s" ]), match$1[0]); var argvdoc; var exit = 0; var s; var exit$1 = 0; if (optvopt === "" && absent === "") { argvdoc = ""; } else { exit$1 = 2; } if (exit$1 === 2) { if (absent === "") { s = optvopt; exit = 1; } else if (optvopt === "") { s = absent; exit = 1; } else { argvdoc = Curry._2(Printf.sprintf(/* Format */[ /* String_literal */Block.__(11, [ " (", /* String */Block.__(2, [ /* No_padding */0, /* String_literal */Block.__(11, [ ") (", /* String */Block.__(2, [ /* No_padding */0, /* Char_literal */Block.__(12, [ /* ")" */41, /* End_of_format */0 ]) ]) ]) ]) ]), " (%s) (%s)" ]), optvopt, absent); } } if (exit === 1) { argvdoc = Curry._1(Printf.sprintf(/* Format */[ /* String_literal */Block.__(11, [ " (", /* String */Block.__(2, [ /* No_padding */0, /* Char_literal */Block.__(12, [ /* ")" */41, /* End_of_format */0 ]) ]) ]), " (%s)" ]), s); } var subst$2 = function (param) { return arg_info_subst(subst$1, a, param); }; var doc = Cmdliner_info.arg_doc(a); var doc$1 = Cmdliner_manpage.subst_vars(errs$1, subst$2, buf$1, doc); return /* tuple */[ Cmdliner_info.arg_docs(a), /* `I */[ 73, /* tuple */[ arg_man_item_label(a) + argvdoc, doc$1 ] ] ]; }), args$2); return sorted_items_to_blocks(undefined, args$3); } function exit_boilerplate(sec) { var match = sec === Cmdliner_manpage.s_exit_status; if (match) { return Cmdliner_manpage.s_exit_status_intro; } } function exit_docs(errs, subst, buf, has_sexit, ei) { var by_sec = function (param, param$1) { return Caml_obj.caml_compare(param[0], param$1[0]); }; var add_exit_item = function (acc, e) { var subst$1 = function (param) { var subst$2 = subst; var e$1 = e; var id = param; switch (id) { case "status" : return Curry._1(Printf.sprintf(/* Format */[ /* Int */Block.__(4, [ /* Int_d */0, /* No_padding */0, /* No_precision */0, /* End_of_format */0 ]), "%d" ]), Cmdliner_info.exit_statuses(e$1)[0]); case "status_max" : return Curry._1(Printf.sprintf(/* Format */[ /* Int */Block.__(4, [ /* Int_d */0, /* No_padding */0, /* No_precision */0, /* End_of_format */0 ]), "%d" ]), Cmdliner_info.exit_statuses(e$1)[1]); default: return Curry._1(subst$2, id); } }; var match = Cmdliner_info.exit_statuses(e); var max = match[1]; var min = match[0]; var doc = Cmdliner_info.exit_doc(e); var label = min === max ? Curry._1(Printf.sprintf(/* Format */[ /* Int */Block.__(4, [ /* Int_d */0, /* No_padding */0, /* No_precision */0, /* End_of_format */0 ]), "%d" ]), min) : Curry._2(Printf.sprintf(/* Format */[ /* Int */Block.__(4, [ /* Int_d */0, /* No_padding */0, /* No_precision */0, /* Char_literal */Block.__(12, [ /* "-" */45, /* Int */Block.__(4, [ /* Int_d */0, /* No_padding */0, /* No_precision */0, /* End_of_format */0 ]) ]) ]), "%d-%d" ]), min, max); var item_001 = /* tuple */[ label, Cmdliner_manpage.subst_vars(errs, subst$1, buf, doc) ]; var item = /* `I */[ 73, item_001 ]; return /* :: */[ /* tuple */[ Cmdliner_info.exit_docs(e), item ], acc ]; }; var exits = Cmdliner_info.term_exits(Cmdliner_info.eval_term(ei)); var exits$1 = List.sort(Cmdliner_info.exit_order, exits); var exits$2 = List.fold_left(add_exit_item, /* [] */0, exits$1); var exits$3 = List.stable_sort(by_sec, exits$2); var boilerplate = has_sexit ? undefined : exit_boilerplate; return sorted_items_to_blocks(boilerplate, exits$3); } function env_boilerplate(sec) { var match = sec === Cmdliner_manpage.s_environment; if (match) { return Cmdliner_manpage.s_environment_intro; } } function env_docs(errs, subst, buf, has_senv, ei) { var add_env_item = function (subst, acc, e) { var seen = acc[0]; if (Curry._2(Cmdliner_info.Envs[/* mem */2], e, seen)) { return acc; } else { var seen$1 = Curry._2(Cmdliner_info.Envs[/* add */3], e, seen); var $$var = Curry._1(Printf.sprintf(/* Format */[ /* String_literal */Block.__(11, [ "$(b,", /* String */Block.__(2, [ /* No_padding */0, /* Char_literal */Block.__(12, [ /* ")" */41, /* End_of_format */0 ]) ]) ]), "$(b,%s)" ]), Cmdliner_manpage.$$escape(Cmdliner_info.env_var(e))); var doc = Cmdliner_info.env_doc(e); var doc$1 = Cmdliner_manpage.subst_vars(errs, subst, buf, doc); var envs_000 = /* tuple */[ Cmdliner_info.env_docs(e), /* `I */[ 73, /* tuple */[ $$var, doc$1 ] ] ]; var envs_001 = acc[1]; var envs = /* :: */[ envs_000, envs_001 ]; return /* tuple */[ seen$1, envs ]; } }; var add_arg_env = function (a, acc) { var match = Cmdliner_info.arg_env(a); if (match !== undefined) { return add_env_item((function (param) { return arg_info_subst(subst, a, param); }), acc, Caml_option.valFromOption(match)); } else { return acc; } }; var add_env = function (acc, e) { return add_env_item((function (param) { return env_info_subst(subst, e, param); }), acc, e); }; var by_sec_by_rev_name = function (param, param$1) { var c = Caml_obj.caml_compare(param[0], param$1[0]); if (c !== 0) { return c; } else { return Caml_obj.caml_compare(param$1[1][1][0], param[1][1][0]); } }; var args = Cmdliner_info.term_args(Cmdliner_info.eval_term(ei)); var tenvs = Cmdliner_info.term_envs(Cmdliner_info.eval_term(ei)); var init_000 = Cmdliner_info.Envs[/* empty */0]; var init = /* tuple */[ init_000, /* [] */0 ]; var acc = Curry._3(Cmdliner_info.Args[/* fold */13], add_arg_env, args, init); var match = List.fold_left(add_env, acc, tenvs); var envs = List.sort(by_sec_by_rev_name, match[1]); var boilerplate = has_senv ? undefined : env_boilerplate; return sorted_items_to_blocks(boilerplate, envs); } function xref_docs(errs, ei) { var main = Cmdliner_info.term_name(Cmdliner_info.eval_main(ei)); var to_xref = function (param) { if (typeof param === "number") { return /* tuple */[ main, 1 ]; } else { var variant = param[0]; if (variant !== 892012143) { if (variant >= 937068408) { return /* tuple */[ param[1], 1 ]; } else { var c = param[1]; if (Cmdliner_info.eval_has_choice(ei, c)) { return /* tuple */[ Curry._2(Printf.sprintf(/* Format */[ /* String */Block.__(2, [ /* No_padding */0, /* Char_literal */Block.__(12, [ /* "-" */45, /* String */Block.__(2, [ /* No_padding */0, /* End_of_format */0 ]) ]) ]), "%s-%s" ]), main, c), 1 ]; } else { Curry._1(Format.fprintf(errs, /* Format */[ /* String_literal */Block.__(11, [ "xref ", /* String */Block.__(2, [ /* No_padding */0, /* String_literal */Block.__(11, [ ": no such term name", /* Formatting_lit */Block.__(17, [ /* Flush_newline */4, /* End_of_format */0 ]) ]) ]) ]), "xref %s: no such term name@." ]), c); return /* tuple */[ "doc-err", 0 ]; } } } else { var match = param[1]; return /* tuple */[ match[0], match[1] ]; } } }; var xref_str = function (param) { return Curry._2(Printf.sprintf(/* Format */[ /* String */Block.__(2, [ /* No_padding */0, /* Char_literal */Block.__(12, [ /* "(" */40, /* Int */Block.__(4, [ /* Int_d */0, /* No_padding */0, /* No_precision */0, /* Char_literal */Block.__(12, [ /* ")" */41, /* End_of_format */0 ]) ]) ]) ]), "%s(%d)" ]), Cmdliner_manpage.$$escape(param[0]), param[1]); }; var xrefs = Cmdliner_info.term_man_xrefs(Cmdliner_info.eval_term(ei)); var xrefs$1 = List.fold_left((function (acc, x) { return /* :: */[ to_xref(x), acc ]; }), /* [] */0, xrefs); var xrefs$2 = List.rev_map(xref_str, List.sort(rev_compare, xrefs$1)); if (xrefs$2 === /* [] */0) { return /* [] */0; } else { return /* :: */[ /* tuple */[ Cmdliner_manpage.s_see_also, /* `P */[ 80, $$String.concat(", ", xrefs$2) ] ], /* [] */0 ]; } } function ensure_s_name(ei, sm) { if (Cmdliner_manpage.smap_has_section(sm, Cmdliner_manpage.s_name)) { return sm; } else { var tname = Cmdliner_manpage.$$escape(invocation(/* "-" */45, ei)); var tdoc = Cmdliner_info.term_doc(Cmdliner_info.eval_term(ei)); var tagline = tdoc === "" ? "" : Curry._1(Printf.sprintf(/* Format */[ /* String_literal */Block.__(11, [ " - ", /* String */Block.__(2, [ /* No_padding */0, /* End_of_format */0 ]) ]), " - %s" ]), tdoc); var tagline_001 = Curry._2(Printf.sprintf(/* Format */[ /* String */Block.__(2, [ /* No_padding */0, /* String */Block.__(2, [ /* No_padding */0, /* End_of_format */0 ]) ]), "%s%s" ]), tname, tagline); var tagline$1 = /* `P */[ 80, tagline_001 ]; return Cmdliner_manpage.smap_append_block(sm, Cmdliner_manpage.s_name, tagline$1); } } function ensure_s_synopsis(ei, sm) { if (Cmdliner_manpage.smap_has_section(sm, Cmdliner_manpage.s_synopsis)) { return sm; } else { var synopsis_001 = synopsis(ei); var synopsis$1 = /* `P */[ 80, synopsis_001 ]; return Cmdliner_manpage.smap_append_block(sm, Cmdliner_manpage.s_synopsis, synopsis$1); } } function insert_term_man_docs(errs, ei, sm) { var buf = $$Buffer.create(200); var subst = function (param) { return term_info_subst(ei, param); }; var ins = function (sm, param) { return Cmdliner_manpage.smap_append_block(sm, param[0], param[1]); }; var has_senv = Cmdliner_manpage.smap_has_section(sm, Cmdliner_manpage.s_environment); var has_sexit = Cmdliner_manpage.smap_has_section(sm, Cmdliner_manpage.s_exit_status); var sm$1 = List.fold_left(ins, sm, cmd_docs(ei)); var sm$2 = List.fold_left(ins, sm$1, arg_docs(errs, subst, buf, ei)); var sm$3 = List.fold_left(ins, sm$2, exit_docs(errs, subst, buf, has_sexit, ei)); var sm$4 = List.fold_left(ins, sm$3, env_docs(errs, subst, buf, has_senv, ei)); return List.fold_left(ins, sm$4, xref_docs(errs, ei)); } function text(errs, ei) { var man = Cmdliner_info.term_man(Cmdliner_info.eval_term(ei)); var sm = Cmdliner_manpage.smap_of_blocks(man); var sm$1 = ensure_s_name(ei, sm); var sm$2 = ensure_s_synopsis(ei, sm$1); return Cmdliner_manpage.smap_to_blocks(insert_term_man_docs(errs, ei, sm$2)); } function title(ei) { var main = Cmdliner_info.eval_main(ei); var exec = Cmdliner_base.capitalize(Cmdliner_info.term_name(main)); var name = Cmdliner_base.uppercase(Cmdliner_manpage.$$escape(invocation(/* "-" */45, ei))); var center_header = Cmdliner_manpage.$$escape(Curry._1(Printf.sprintf(/* Format */[ /* String */Block.__(2, [ /* No_padding */0, /* String_literal */Block.__(11, [ " Manual", /* End_of_format */0 ]) ]), "%s Manual" ]), exec)); var match = Cmdliner_info.term_version(main); var version = match !== undefined ? " " + match : ""; var left_footer = Cmdliner_manpage.$$escape(Curry._2(Printf.sprintf(/* Format */[ /* String */Block.__(2, [ /* No_padding */0, /* String */Block.__(2, [ /* No_padding */0, /* End_of_format */0 ]) ]), "%s%s" ]), exec, version)); return /* tuple */[ name, 1, "", left_footer, center_header ]; } function man(errs, ei) { return /* tuple */[ title(ei), text(errs, ei) ]; } function pp_man(errs, fmt, ppf, ei) { return Cmdliner_manpage.print(Caml_option.some(errs), (function (param) { return term_info_subst(ei, param); }), fmt, ppf, man(errs, ei)); } function pp_plain_synopsis(errs, ppf, ei) { var buf = $$Buffer.create(100); var subst = function (param) { return term_info_subst(ei, param); }; return Curry._1(Format.fprintf(ppf, /* Format */[ /* Formatting_gen */Block.__(18, [ /* Open_box */Block.__(1, [/* Format */[ /* End_of_format */0, "" ]]), /* String */Block.__(2, [ /* No_padding */0, /* Formatting_lit */Block.__(17, [ /* Close_box */0, /* End_of_format */0 ]) ]) ]), "@[%s@]" ]), Cmdliner_manpage.doc_to_plain(errs, subst, buf, synopsis(ei))); } exports.plain_invocation = plain_invocation; exports.pp_man = pp_man; exports.pp_plain_synopsis = pp_plain_synopsis; /* Format Not a pure module */