datakit
Version:
Simple JavaScript toolkit for data transform across JSON, CSV and YAML.
63 lines • 2.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.pullOptions = exports.consumeOptionalArg = void 0;
//
// Consumes an argument and returns it's value.
//
function consumeOptionalArg(argv, startingIndex, option) {
if (argv.length < startingIndex + 1) {
return undefined; // No more arguments.
}
function throwError(argument, exampleValue) {
throw new Error("Bad argument. Expected something like: \"".concat(argument).concat(exampleValue, "\""));
}
for (var _i = 0, _a = option.names; _i < _a.length; _i++) {
var optionName = _a[_i];
for (var _b = 0, _c = ["-".concat(optionName), "--".concat(optionName)]; _b < _c.length; _b++) {
var optionVariant = _c[_b];
if (argv[startingIndex] == optionVariant) {
var actualArg = argv.splice(startingIndex, 1)[0];
if (argv.length < startingIndex + 1) {
throwError(actualArg + " ", option.example);
}
var argValue = argv.splice(startingIndex, 1)[0];
return argValue;
}
else if (argv[startingIndex].startsWith("".concat(optionVariant, "="))) {
var actualArg = argv.splice(startingIndex, 1)[0];
return actualArg.substring(optionVariant.length + 1);
}
}
}
return undefined;
}
exports.consumeOptionalArg = consumeOptionalArg;
//
// Pulls options from the set of arguments.
//
function pullOptions(options, argv) {
var output = {};
for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {
var option = options_1[_i];
var value = findOption(argv, option);
if (value) {
output[option.names[0]] = value;
continue;
}
}
return output;
}
exports.pullOptions = pullOptions;
//
// Find the value for an option in the list of arguments.
//
function findOption(argv, option) {
for (var argIndex = 0; argIndex < argv.length; ++argIndex) {
var value = consumeOptionalArg(argv, argIndex, option);
if (value !== undefined) {
return value;
}
}
return undefined;
}
//# sourceMappingURL=args.js.map