Skip to content

Commit 9f08593

Browse files
feat: add parse-args CLI utility for argument parsing
1 parent 90b1d08 commit 9f08593

3 files changed

Lines changed: 45 additions & 0 deletions

File tree

lib/node_modules/@stdlib/cli/parse-args/lib/index.js

Whitespace-only changes.
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
'use strict';
2+
3+
function parseArgs(args, opts) {
4+
var result = {
5+
_: []
6+
};
7+
8+
var i = 0;
9+
10+
while (i < args.length) {
11+
var arg = args[i];
12+
13+
if (arg.startsWith('--') && arg.includes('=')) {
14+
var parts = arg.slice(2).split('=');
15+
result[parts[0]] = parts[1];
16+
17+
} else if (arg.startsWith('--')) {
18+
var key = arg.slice(2);
19+
var next = args[i + 1];
20+
21+
if (next && !next.startsWith('-')) {
22+
result[key] = next;
23+
i++;
24+
} else {
25+
result[key] = true;
26+
}
27+
28+
} else if (arg.startsWith('-')) {
29+
var flags = arg.slice(1).split('');
30+
for (var j = 0; j < flags.length; j++) {
31+
result[flags[j]] = true;
32+
}
33+
34+
} else {
35+
result._.push(arg);
36+
}
37+
38+
i++;
39+
}
40+
41+
return result;
42+
}
43+
44+
module.exports = parseArgs;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"name":"@stdlib/cli/parse-args","version":"0.0.1","main":"lib/main.js"}

0 commit comments

Comments
 (0)