MIRROR: javascript for 馃悳's, a tiny runtime with big ambitions
1const { parseArgs } = require('node:util');
2
3function assert(cond, msg) {
4 if (!cond) throw new Error(msg);
5}
6
7let result = parseArgs({
8 args: ['--prompt', 'hello', '-c', 'positional'],
9 options: {
10 prompt: { type: 'string', short: 'p' },
11 continue: { type: 'boolean', short: 'c', default: false },
12 format: { type: 'string', default: 'default' }
13 },
14 strict: false,
15 allowPositionals: true
16});
17
18assert(result.values.prompt === 'hello', 'expected string long option');
19assert(result.values.continue === true, 'expected boolean short option');
20assert(result.values.format === 'default', 'expected default string option');
21assert(Array.isArray(result.positionals), 'expected positionals array');
22assert(result.positionals.length === 1 && result.positionals[0] === 'positional', 'expected positional passthrough');
23
24result = parseArgs({
25 args: ['-phello', '--format=json'],
26 options: {
27 prompt: { type: 'string', short: 'p' },
28 format: { type: 'string' }
29 },
30 strict: false,
31 allowPositionals: true
32});
33
34assert(result.values.prompt === 'hello', 'expected attached short string value');
35assert(result.values.format === 'json', 'expected inline long string value');
36
37console.log('PASS');