UNPKG

cli-reap

Version:

CLI and ENV parser; indifferent to argument order or runtime

122 lines (119 loc) 5.1 kB
// node_modules/globables/dist/index.js var GLOBAL_THIS = /* @__PURE__ */ (() => typeof globalThis === "object" ? globalThis : (() => { (function(Object2) { function get() { const e = this || self; e.globalThis = e, delete Object2.prototype._T_; } typeof globalThis != "object" && (this ? get() : (Object2.defineProperty(Object2.prototype, "_T_", { configurable: true, get }), _T_)); })(Object); return typeof globalThis === "object" ? globalThis : {}; })())(); var ARGV = /* @__PURE__ */ (() => { var _a, _b, _c, _d; return typeof process === "undefined" ? typeof scriptArgs !== "undefined" ? scriptArgs : [] : (_d = (GLOBAL_THIS == null ? undefined : GLOBAL_THIS["Deno"]) ? (_c = (_a = GLOBAL_THIS == null ? undefined : GLOBAL_THIS["Deno"]) == null ? undefined : _a.args) != null ? _c : ((_b = process["args"]) == null ? undefined : _b.length) ? process["args"] : process["argv"] : process["argv"]) != null ? _d : []; })(); var ENV = /* @__PURE__ */ (() => { var _a, _b, _c, _d; return typeof process === "undefined" ? typeof ((_a = GLOBAL_THIS == null ? undefined : GLOBAL_THIS["std"]) == null ? undefined : _a.getenviron) === "function" ? (_d = (_c = (_b = GLOBAL_THIS["std"]).getenviron) == null ? undefined : _c.call(_b)) != null ? _d : {} : {} : !(GLOBAL_THIS == null ? undefined : GLOBAL_THIS["Deno"]) ? process["env"] : (() => { var _a2, _b2, _c2, _d2, _e, _f; try { return (_f = (_c2 = (_b2 = (_a2 = GLOBAL_THIS == null ? undefined : GLOBAL_THIS["Deno"]) == null ? undefined : _a2.env) == null ? undefined : _b2.toObject) == null ? undefined : _c2.call(_b2)) != null ? _f : ((_d2 = process["env"]) == null ? undefined : _d2.toObject) ? (_e = process["env"]) == null ? undefined : _e.toObject() : process["env"]; } catch (_err) {} return {}; })(); })(); // src/index.ts var hasArgv = (keys, argv = ARGV) => !argv?.length ? false : !![keys].flat().filter(Boolean).find((key) => new RegExp(`(^|[^\\S])(?:--|-)${key}(=|\\s|$)`, "i").test(argv.join(" "))); var quoteNorm = (val) => /^['"]/.test(val) ? val?.replace(/^(['"])(.*)(['"])$/, (m, q1, body, q2) => q1 === q2 ? quoteNorm(body) : m) : val; var isFlag = (val) => /^-+\w/.test(val ?? "") && Number.isNaN(Number(val)); var isTerm = (val) => val?.trim() === "--"; var toArgvArray = (key, strict = false, _keys = Array.isArray(key) ? key : [key]) => strict ? _keys : _keys.map((item) => [ item, item.replaceAll(...item.includes("_") ? ["_", "-"] : ["-", "_"]) ]).flat(); var cliReap = (argv = ARGV, env = ENV, gthis = GLOBAL_THIS, strict = false) => { const slice = argv[0] === "node" ? 2 : argv[1] === "run" ? 3 : isFlag(argv[0]) ? 0 : 1; const cur = argv.map(String).slice(slice); const cmd = argv.map(String).slice(0, slice); const end = !!cur.find(isTerm); const getArgv = (keys, optValue = false) => { const keyList = toArgvArray(keys, strict); for (let i = 0;i < cur.length; i++) { const token = cur[i]; if (isTerm(token)) { break; } if (!token || !isFlag(token)) { continue; } const hasEq = /=/.test(token); const part = keyList.map((key) => { const [k, ...parts] = token.replace(isFlag(key) ? /(?!)/ : /^\s*?-+/, "").split(hasEq && optValue ? `${key}=` : new RegExp(`^${key}$`, strict ? "" : "i")); return !k?.length ? parts.join(key) : k === key ? key : null; }).find((v) => v !== null) ?? 0; if (part === 0) { continue; } if (!optValue) { cur.splice(i, 1); return true; } if (hasEq) { cur.splice(i, 1); return quoteNorm(part); } const next = cur[i + 1]; if (next !== undefined && !isTerm(next) && !isFlag(next)) { cur.splice(i, 2); return quoteNorm(next); } } return null; }; const getEnv = (keys) => toArgvArray(keys, strict).map((key) => (key in env) ? env[key] : (key in gthis) ? gthis[key] : null).filter(Boolean)[0] ?? null; const getFlag = (keys) => getArgv(keys, false) !== null ? true : null; const getOpt = (keys) => getArgv(keys, true); const getAny = (keys, defaultValue) => getOpt(keys) ?? getFlag(keys) ?? getEnv(keys) ?? (defaultValue !== undefined ? defaultValue : null); const getPos = () => { const result = []; for (let i = 0;i < cur.length; i++) { const token = cur[i]; if (!token) { continue; } if (isTerm(token)) { return [...result, ...cur.slice(i + 1)]; } if (isFlag(token)) { continue; } result.push(token); } return result; }; return { any: getAny, cmd: () => cmd, cur: () => cur, end: () => end, env: getEnv, flag: getFlag, opt: getOpt, pos: getPos }; }; var cliReapStrict = (argv = ARGV, procEnv = ENV, gthis = GLOBAL_THIS) => cliReap(argv, procEnv, gthis, true); var src_default = cliReap; export { quoteNorm, isFlag, hasArgv, src_default as default, cliReapStrict, cliReap, ENV, ARGV }; //# debugId=D346F45C437553B064756E2164756E21 //# sourceMappingURL=index.js.map