@elliottcable/bs-cmdliner
Version:
Cmdliner — Declarative definition of command line interfaces for OCaml
1,157 lines (1,127 loc) • 42.6 kB
JavaScript
;
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 */