UNPKG

args-any

Version:

Utility lib for parsing command options

51 lines 2.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.option = exports.optionParser = exports.create = exports.hasPrefix = exports.isKey = exports.empty = void 0; const lodash_1 = require("lodash"); const operator_parser_1 = require("./operator.parser"); const prefixless_key_parser_1 = require("./prefixless-key.parser"); exports.empty = Object.freeze({ key: "", operator: operator_parser_1.operator.default, toString: () => "", value: "" }); const defaultFlags = ["h", "debug"]; const isKey = (arg) => (arg && arg.startsWith(prefixless_key_parser_1.optionMarker)) || false; exports.isKey = isKey; const hasPrefix = (arg, prefix) => (0, exports.isKey)(arg) && (0, lodash_1.trimStart)(arg, prefixless_key_parser_1.optionMarker).startsWith(`${prefix}${prefixless_key_parser_1.prefixSeparator}`); exports.hasPrefix = hasPrefix; const isFlag = (key, flags) => { const flagKeys = flags || defaultFlags; return flagKeys.find((x) => x === (0, prefixless_key_parser_1.parsePrefixlessKey)(key)) !== undefined; }; const create = (fields) => { const option = { ...exports.empty, ...fields }; option.toString = () => option.value; return option; }; exports.create = create; const optionParser = (key, args, settings) => { const index = args.indexOf(key) + 1; const [first, second] = [...args].slice(index); const flags = settings && settings.flags; let op = ""; let value; if (!isFlag(key, flags) && first && !(0, exports.isKey)(first) && second && !(0, exports.isKey)(second) && operator_parser_1.operator.has(first)) { op = first; value = second; } else if (!isFlag(key, flags) && first && !(0, exports.isKey)(first)) { value = first; } return (0, exports.create)({ key: (0, prefixless_key_parser_1.parsePrefixlessKey)(key, settings), operator: operator_parser_1.operator.parse(op), value }); }; exports.optionParser = optionParser; exports.option = { create: exports.create, empty: exports.empty, parse: exports.optionParser, hasPrefix: exports.hasPrefix, isKey: exports.isKey }; //# sourceMappingURL=option.parser.js.map