UNPKG

1.25 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3function filterArgs(argv, { allow, block }) {
4 const filteredArgv = [];
5 const unknownArgv = [];
6 const isInvalid = (option) => {
7 return (allow && !allow[option]) || (block && block[option]);
8 };
9 let skipNext = false;
10 argv.forEach((arg, i) => {
11 if (skipNext) {
12 skipNext = false;
13 return;
14 }
15 if (arg.startsWith('-')) {
16 let option = arg;
17 const nextArg = argv[i + 1];
18 // --opt=123
19 if (option.includes('=')) {
20 [option] = option.split('=');
21 if (isInvalid(option)) {
22 unknownArgv.push(arg);
23 return;
24 }
25 // --opt 123
26 }
27 else if (isInvalid(option)) {
28 unknownArgv.push(arg);
29 if (nextArg && !nextArg.startsWith('-')) {
30 skipNext = true;
31 unknownArgv.push(nextArg);
32 }
33 return;
34 }
35 }
36 filteredArgv.push(arg);
37 });
38 return {
39 filteredArgv,
40 unknownArgv,
41 };
42}
43exports.default = filterArgs;