icore 1.0.5 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/argv.d.ts.map +1 -1
- package/dist/argv.js +72 -4
- package/dist/argv.js.map +1 -1
- package/dist/commands.d.ts +3 -3
- package/dist/commands.d.ts.map +1 -1
- package/dist/options.d.ts +4 -3
- package/dist/options.d.ts.map +1 -1
- package/dist/options.js +6 -3
- package/dist/options.js.map +1 -1
- package/package.json +1 -1
- package/readme.md +94 -54
package/dist/argv.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"argv.d.ts","sourceRoot":"","sources":["../src/argv.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"argv.d.ts","sourceRoot":"","sources":["../src/argv.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAEV,aAAa,EACb,cAAc,EACf,MAAM,WAAW,CAAC;AAEnB;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACzC,CAAC;AAOF;;GAEG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,MAAM,CAAC,EAAE,aAAa,GACrB,UAAU,CAsHZ"}
|
package/dist/argv.js
CHANGED
|
@@ -18,17 +18,44 @@ exports.parseArgv = parseArgv;
|
|
|
18
18
|
function parseArgv(args, schema) {
|
|
19
19
|
const positionals = [];
|
|
20
20
|
const options = {};
|
|
21
|
+
const aliases = buildShortAliasMap(schema);
|
|
21
22
|
let parseOptions = true;
|
|
22
23
|
for (let index = 0; index < args.length; index += 1) {
|
|
23
24
|
const arg = args[index];
|
|
24
25
|
if (arg === undefined) {
|
|
25
26
|
continue;
|
|
26
27
|
}
|
|
27
|
-
if (!parseOptions
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
if (!parseOptions) {
|
|
29
|
+
positionals.push(arg);
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
if (arg === '--') {
|
|
33
|
+
parseOptions = false;
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
if (isShortOptionToken(arg)) {
|
|
37
|
+
const alias = aliases.get(arg.slice(1));
|
|
38
|
+
if (alias === undefined) {
|
|
39
|
+
positionals.push(arg);
|
|
30
40
|
continue;
|
|
31
41
|
}
|
|
42
|
+
if (Object.hasOwn(options, alias.name)) {
|
|
43
|
+
throw new Error(`Unexpected duplicate argument '--${alias.name}'`);
|
|
44
|
+
}
|
|
45
|
+
if (alias.definition.type === 'boolean') {
|
|
46
|
+
options[alias.name] = true;
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
const nextArg = args[index + 1];
|
|
50
|
+
if (nextArg !== undefined && nextArg !== '--') {
|
|
51
|
+
options[alias.name] = nextArg;
|
|
52
|
+
index += 1;
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
options[alias.name] = true;
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
if (!arg.startsWith('--')) {
|
|
32
59
|
positionals.push(arg);
|
|
33
60
|
continue;
|
|
34
61
|
}
|
|
@@ -40,6 +67,18 @@ function parseArgv(args, schema) {
|
|
|
40
67
|
if (name === '') {
|
|
41
68
|
throw new Error(`Unexpected argument '${arg}'`);
|
|
42
69
|
}
|
|
70
|
+
const definition = schema?.[name];
|
|
71
|
+
if (separatorIndex === -1 && definition === undefined && name.startsWith('no-')) {
|
|
72
|
+
const negatedName = name.slice(3);
|
|
73
|
+
const negatedDefinition = schema?.[negatedName];
|
|
74
|
+
if (negatedDefinition?.type === 'boolean') {
|
|
75
|
+
if (Object.hasOwn(options, negatedName)) {
|
|
76
|
+
throw new Error(`Unexpected duplicate argument '--${negatedName}'`);
|
|
77
|
+
}
|
|
78
|
+
options[negatedName] = false;
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
43
82
|
if (Object.hasOwn(options, name)) {
|
|
44
83
|
throw new Error(`Unexpected duplicate argument '--${name}'`);
|
|
45
84
|
}
|
|
@@ -47,7 +86,6 @@ function parseArgv(args, schema) {
|
|
|
47
86
|
options[name] = option.slice(separatorIndex + 1);
|
|
48
87
|
continue;
|
|
49
88
|
}
|
|
50
|
-
const definition = schema?.[name];
|
|
51
89
|
if (definition?.type === 'boolean') {
|
|
52
90
|
options[name] = true;
|
|
53
91
|
continue;
|
|
@@ -70,4 +108,34 @@ function parseArgv(args, schema) {
|
|
|
70
108
|
options
|
|
71
109
|
};
|
|
72
110
|
}
|
|
111
|
+
function buildShortAliasMap(schema) {
|
|
112
|
+
const aliases = new Map();
|
|
113
|
+
if (schema === undefined) {
|
|
114
|
+
return aliases;
|
|
115
|
+
}
|
|
116
|
+
for (const name of Object.keys(schema)) {
|
|
117
|
+
const definition = schema[name];
|
|
118
|
+
if (definition === undefined || definition.alias === undefined) {
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
assertShortAlias(name, definition.alias);
|
|
122
|
+
if (aliases.has(definition.alias)) {
|
|
123
|
+
throw new Error(`Unexpected duplicate alias '-${definition.alias}'`);
|
|
124
|
+
}
|
|
125
|
+
aliases.set(definition.alias, {
|
|
126
|
+
name,
|
|
127
|
+
definition
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
return aliases;
|
|
131
|
+
}
|
|
132
|
+
function assertShortAlias(name, alias) {
|
|
133
|
+
if (/^[A-Za-z]$/.test(alias)) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
throw new Error(`Expected alias for '--${name}' as single ASCII letter`);
|
|
137
|
+
}
|
|
138
|
+
function isShortOptionToken(arg) {
|
|
139
|
+
return arg.length === 2 && arg.startsWith('-') && !arg.startsWith('--');
|
|
140
|
+
}
|
|
73
141
|
//# sourceMappingURL=argv.js.map
|
package/dist/argv.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"argv.js","sourceRoot":"","sources":["../src/argv.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;
|
|
1
|
+
{"version":3,"file":"argv.js","sourceRoot":"","sources":["../src/argv.ts"],"names":[],"mappings":"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"}
|
package/dist/commands.d.ts
CHANGED
|
@@ -33,13 +33,13 @@ export type CommandDefinition<TSchema extends OptionsSchema, TContext, TResult,
|
|
|
33
33
|
allowExtraPositionals?: boolean;
|
|
34
34
|
handle(input: CommandInput<TSchema, TContext>): TResult | Promise<TResult>;
|
|
35
35
|
};
|
|
36
|
-
type AnyCommandDefinition = CommandDefinition<OptionsSchema,
|
|
36
|
+
type AnyCommandDefinition = CommandDefinition<OptionsSchema, unknown, unknown>;
|
|
37
37
|
type CommandPathName<TPath extends readonly string[]> = number extends TPath['length'] ? string : TPath extends readonly [infer THead extends string] ? THead : TPath extends readonly [
|
|
38
38
|
infer THead extends string,
|
|
39
39
|
...infer TRest extends readonly string[]
|
|
40
40
|
] ? `${THead} ${CommandPathName<TRest>}` : never;
|
|
41
|
-
type CommandContext<TCommand extends AnyCommandDefinition> = TCommand extends CommandDefinition<OptionsSchema, infer TContext,
|
|
42
|
-
type CommandResult<TCommand extends AnyCommandDefinition> = TCommand extends CommandDefinition<OptionsSchema,
|
|
41
|
+
type CommandContext<TCommand extends AnyCommandDefinition> = TCommand extends CommandDefinition<OptionsSchema, infer TContext, unknown> ? TContext : never;
|
|
42
|
+
type CommandResult<TCommand extends AnyCommandDefinition> = TCommand extends CommandDefinition<OptionsSchema, unknown, infer TResult> ? Awaited<TResult> : never;
|
|
43
43
|
/**
|
|
44
44
|
* Infers the public command name from a command path.
|
|
45
45
|
*/
|
package/dist/commands.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EACnB,MAAM,WAAW,CAAC;AAEnB;;GAEG;AACH,MAAM,MAAM,YAAY,CACtB,OAAO,SAAS,aAAa,EAC7B,QAAQ,IACN;IACF,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IAC/B,QAAQ,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACxC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,QAAQ,CAAC;CACnB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,CAC3B,OAAO,SAAS,aAAa,EAC7B,QAAQ,EACR,OAAO,EACP,KAAK,SAAS,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,IAC3E;IACF,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5E,CAAC;AAEF,KAAK,oBAAoB,GAAG,iBAAiB,CAAC,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
|
package/dist/options.d.ts
CHANGED
|
@@ -12,14 +12,15 @@
|
|
|
12
12
|
*/
|
|
13
13
|
type OptionBase<TType extends string, TValue> = {
|
|
14
14
|
type: TType;
|
|
15
|
+
alias?: string;
|
|
15
16
|
required?: boolean;
|
|
16
17
|
default?: TValue;
|
|
17
18
|
};
|
|
18
19
|
/**
|
|
19
20
|
* Raw option value produced by `parseArgv` before schema validation.
|
|
20
21
|
*
|
|
21
|
-
* Long options with a value are stored as strings,
|
|
22
|
-
* stored as `true`.
|
|
22
|
+
* Long options with a value are stored as strings, flag-only options are
|
|
23
|
+
* stored as `true`, and negated boolean options are stored as `false`.
|
|
23
24
|
*/
|
|
24
25
|
export type RawOptionValue = string | boolean;
|
|
25
26
|
/**
|
|
@@ -34,7 +35,7 @@ export type StringOption<TChoices extends readonly string[] = readonly string[]>
|
|
|
34
35
|
/**
|
|
35
36
|
* Declarative boolean flag contract.
|
|
36
37
|
*
|
|
37
|
-
* Boolean options accept flag form
|
|
38
|
+
* Boolean options accept flag form and explicit `true` / `false` values.
|
|
38
39
|
*/
|
|
39
40
|
export type BooleanOption = OptionBase<'boolean', boolean>;
|
|
40
41
|
/**
|
package/dist/options.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"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"}
|
package/dist/options.js
CHANGED
|
@@ -104,10 +104,13 @@ function parseStringOption(name, definition, value) {
|
|
|
104
104
|
return value;
|
|
105
105
|
}
|
|
106
106
|
function parseBooleanOption(name, value) {
|
|
107
|
-
if (value
|
|
108
|
-
|
|
107
|
+
if (value === true || value === 'true') {
|
|
108
|
+
return true;
|
|
109
109
|
}
|
|
110
|
-
|
|
110
|
+
if (value === false || value === 'false') {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
throw new Error(`Expected '--${name}' as boolean flag`);
|
|
111
114
|
}
|
|
112
115
|
function parseNumberOption(name, definition, value) {
|
|
113
116
|
if (typeof value !== 'string' || value.trim() === '') {
|
package/dist/options.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -7,6 +7,13 @@
|
|
|
7
7
|
|
|
8
8
|
Small dependency-free command line interface mechanics for [Node.js®](https://nodejs.org) applications.
|
|
9
9
|
|
|
10
|
+
Supports a practical GNU-style option syntax:
|
|
11
|
+
|
|
12
|
+
- long options: `--name value`, `--name=value`;
|
|
13
|
+
- boolean flags: `--flag`, `--flag=true`, `--flag=false`, `--no-flag`;
|
|
14
|
+
- short aliases: `-f`, `-n value`;
|
|
15
|
+
- option terminator: `--`.
|
|
16
|
+
|
|
10
17
|
### Installation
|
|
11
18
|
|
|
12
19
|
To use `icore` in your project, run:
|
|
@@ -47,8 +54,8 @@ import { parseArgv } from 'icore';
|
|
|
47
54
|
const argv = parseArgv([
|
|
48
55
|
'hello',
|
|
49
56
|
'--name',
|
|
50
|
-
'
|
|
51
|
-
'--
|
|
57
|
+
'Alice',
|
|
58
|
+
'--uppercase'
|
|
52
59
|
]);
|
|
53
60
|
```
|
|
54
61
|
|
|
@@ -58,8 +65,8 @@ Result:
|
|
|
58
65
|
{
|
|
59
66
|
positionals: ['hello'],
|
|
60
67
|
options: {
|
|
61
|
-
name: '
|
|
62
|
-
|
|
68
|
+
name: 'Alice',
|
|
69
|
+
uppercase: true
|
|
63
70
|
}
|
|
64
71
|
}
|
|
65
72
|
```
|
|
@@ -70,10 +77,10 @@ options without consuming the following positional argument:
|
|
|
70
77
|
```ts
|
|
71
78
|
const argv = parseArgv([
|
|
72
79
|
'hello',
|
|
73
|
-
'--
|
|
74
|
-
'
|
|
80
|
+
'--uppercase',
|
|
81
|
+
'Alice'
|
|
75
82
|
], {
|
|
76
|
-
|
|
83
|
+
uppercase: {
|
|
77
84
|
type: 'boolean'
|
|
78
85
|
}
|
|
79
86
|
});
|
|
@@ -83,9 +90,9 @@ Result:
|
|
|
83
90
|
|
|
84
91
|
```ts
|
|
85
92
|
{
|
|
86
|
-
positionals: ['hello', '
|
|
93
|
+
positionals: ['hello', 'Alice'],
|
|
87
94
|
options: {
|
|
88
|
-
|
|
95
|
+
uppercase: true
|
|
89
96
|
}
|
|
90
97
|
}
|
|
91
98
|
```
|
|
@@ -102,12 +109,12 @@ const options = parseOptions({
|
|
|
102
109
|
type: 'string',
|
|
103
110
|
default: 'world'
|
|
104
111
|
},
|
|
105
|
-
|
|
112
|
+
uppercase: {
|
|
106
113
|
type: 'boolean'
|
|
107
114
|
}
|
|
108
115
|
} as const, {
|
|
109
|
-
name: '
|
|
110
|
-
|
|
116
|
+
name: 'Alice',
|
|
117
|
+
uppercase: true
|
|
111
118
|
});
|
|
112
119
|
```
|
|
113
120
|
|
|
@@ -115,8 +122,8 @@ Result:
|
|
|
115
122
|
|
|
116
123
|
```ts
|
|
117
124
|
{
|
|
118
|
-
name: '
|
|
119
|
-
|
|
125
|
+
name: 'Alice',
|
|
126
|
+
uppercase: true
|
|
120
127
|
}
|
|
121
128
|
```
|
|
122
129
|
|
|
@@ -133,11 +140,11 @@ const result = parseOptionsDetailed({
|
|
|
133
140
|
type: 'string',
|
|
134
141
|
default: 'world'
|
|
135
142
|
},
|
|
136
|
-
|
|
143
|
+
uppercase: {
|
|
137
144
|
type: 'boolean'
|
|
138
145
|
}
|
|
139
146
|
} as const, {
|
|
140
|
-
|
|
147
|
+
uppercase: true
|
|
141
148
|
});
|
|
142
149
|
```
|
|
143
150
|
|
|
@@ -147,11 +154,11 @@ Result:
|
|
|
147
154
|
{
|
|
148
155
|
options: {
|
|
149
156
|
name: 'world',
|
|
150
|
-
|
|
157
|
+
uppercase: true
|
|
151
158
|
},
|
|
152
159
|
provided: {
|
|
153
160
|
name: false,
|
|
154
|
-
|
|
161
|
+
uppercase: true
|
|
155
162
|
}
|
|
156
163
|
}
|
|
157
164
|
```
|
|
@@ -173,14 +180,14 @@ const command = defineCommand({
|
|
|
173
180
|
type: 'string',
|
|
174
181
|
default: 'world'
|
|
175
182
|
},
|
|
176
|
-
|
|
183
|
+
uppercase: {
|
|
177
184
|
type: 'boolean'
|
|
178
185
|
}
|
|
179
186
|
},
|
|
180
187
|
async handle({ options }) {
|
|
181
188
|
const message = `Hello, ${options.name}!`;
|
|
182
189
|
|
|
183
|
-
return options.
|
|
190
|
+
return options.uppercase ? message.toUpperCase() : message;
|
|
184
191
|
}
|
|
185
192
|
});
|
|
186
193
|
```
|
|
@@ -235,7 +242,7 @@ import { resolveCommand } from 'icore';
|
|
|
235
242
|
const resolved = resolveCommand(registry, [
|
|
236
243
|
'hello',
|
|
237
244
|
'formal',
|
|
238
|
-
'
|
|
245
|
+
'Alice'
|
|
239
246
|
]);
|
|
240
247
|
```
|
|
241
248
|
|
|
@@ -246,7 +253,7 @@ Result:
|
|
|
246
253
|
name: 'hello formal',
|
|
247
254
|
path: ['hello', 'formal'],
|
|
248
255
|
command: helloFormalCommand,
|
|
249
|
-
positionals: ['
|
|
256
|
+
positionals: ['Alice']
|
|
250
257
|
}
|
|
251
258
|
```
|
|
252
259
|
|
|
@@ -263,8 +270,8 @@ segments.
|
|
|
263
270
|
const resolved = resolveCommandFromArgs(registry, [
|
|
264
271
|
'hello',
|
|
265
272
|
'--name',
|
|
266
|
-
'
|
|
267
|
-
'--
|
|
273
|
+
'Alice',
|
|
274
|
+
'--uppercase'
|
|
268
275
|
]);
|
|
269
276
|
```
|
|
270
277
|
|
|
@@ -275,7 +282,7 @@ Resolves a command from a registry and runs its handler.
|
|
|
275
282
|
```ts
|
|
276
283
|
const output = await runCommandFromRegistry(
|
|
277
284
|
registry,
|
|
278
|
-
['hello', '--name', '
|
|
285
|
+
['hello', '--name', 'Alice', '--uppercase'],
|
|
279
286
|
context
|
|
280
287
|
);
|
|
281
288
|
```
|
|
@@ -299,7 +306,7 @@ const nameOptions = {
|
|
|
299
306
|
} as const;
|
|
300
307
|
|
|
301
308
|
const greetingOptions = {
|
|
302
|
-
|
|
309
|
+
uppercase: {
|
|
303
310
|
type: 'boolean'
|
|
304
311
|
}
|
|
305
312
|
} as const;
|
|
@@ -315,7 +322,7 @@ handler.
|
|
|
315
322
|
```ts
|
|
316
323
|
const output = await runCommand(
|
|
317
324
|
command,
|
|
318
|
-
['hello', '--name', '
|
|
325
|
+
['hello', '--name', 'Alice', '--uppercase'],
|
|
319
326
|
context
|
|
320
327
|
);
|
|
321
328
|
```
|
|
@@ -325,7 +332,7 @@ positionals with `allowExtraPositionals: true`.
|
|
|
325
332
|
|
|
326
333
|
### How It Works
|
|
327
334
|
|
|
328
|
-

|
|
329
336
|
|
|
330
337
|
|
|
331
338
|
### Example
|
|
@@ -340,20 +347,20 @@ const exampleCommand = defineCommand({
|
|
|
340
347
|
type: 'string',
|
|
341
348
|
default: 'world'
|
|
342
349
|
},
|
|
343
|
-
|
|
350
|
+
uppercase: {
|
|
344
351
|
type: 'boolean'
|
|
345
352
|
}
|
|
346
353
|
},
|
|
347
354
|
async handle({ options }) {
|
|
348
355
|
const message = `Hello, ${options.name}!`;
|
|
349
356
|
|
|
350
|
-
return options.
|
|
357
|
+
return options.uppercase ? message.toUpperCase() : message;
|
|
351
358
|
}
|
|
352
359
|
});
|
|
353
360
|
|
|
354
361
|
const output = await runCommand(
|
|
355
362
|
exampleCommand,
|
|
356
|
-
['hello', '--name', '
|
|
363
|
+
['hello', '--name', 'Alice', '--uppercase'],
|
|
357
364
|
{}
|
|
358
365
|
);
|
|
359
366
|
|
|
@@ -363,8 +370,8 @@ console.log(output);
|
|
|
363
370
|
Terminal output:
|
|
364
371
|
|
|
365
372
|
```console
|
|
366
|
-
$ node cli.js hello --name
|
|
367
|
-
HELLO,
|
|
373
|
+
$ node cli.js hello --name Alice --uppercase
|
|
374
|
+
HELLO, ALICE!
|
|
368
375
|
```
|
|
369
376
|
|
|
370
377
|
The command handler receives parsed options, user-provided option metadata,
|
|
@@ -378,6 +385,24 @@ Options are described as plain objects.
|
|
|
378
385
|
`kebab-case`. Use quoted object keys when your public CLI option contains
|
|
379
386
|
`-`.
|
|
380
387
|
|
|
388
|
+
Each option can define an optional short alias:
|
|
389
|
+
|
|
390
|
+
```ts
|
|
391
|
+
const schema = {
|
|
392
|
+
name: {
|
|
393
|
+
type: 'string',
|
|
394
|
+
alias: 'n'
|
|
395
|
+
},
|
|
396
|
+
uppercase: {
|
|
397
|
+
type: 'boolean',
|
|
398
|
+
alias: 'u'
|
|
399
|
+
}
|
|
400
|
+
} as const;
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
Aliases must be a single ASCII letter and unique within the schema. Parsed
|
|
404
|
+
values are always returned by long option name.
|
|
405
|
+
|
|
381
406
|
#### `type: 'string'`
|
|
382
407
|
|
|
383
408
|
```ts
|
|
@@ -394,32 +419,39 @@ const schema = {
|
|
|
394
419
|
} as const;
|
|
395
420
|
```
|
|
396
421
|
|
|
397
|
-
String options reject missing required values, blank strings
|
|
398
|
-
and values outside `choices`.
|
|
422
|
+
String options reject missing required values, blank strings such as `--name=`,
|
|
423
|
+
boolean flag form, and values outside `choices`.
|
|
399
424
|
|
|
400
425
|
#### `type: 'boolean'`
|
|
401
426
|
|
|
402
427
|
```ts
|
|
403
428
|
const schema = {
|
|
404
|
-
|
|
429
|
+
uppercase: {
|
|
405
430
|
type: 'boolean'
|
|
406
431
|
}
|
|
407
432
|
} as const;
|
|
408
433
|
```
|
|
409
434
|
|
|
410
|
-
Boolean options accept **flag form
|
|
435
|
+
Boolean options accept **flag form**, explicit `true` / `false` values, and
|
|
436
|
+
schema-known negation:
|
|
411
437
|
|
|
412
438
|
```sh
|
|
413
|
-
--
|
|
439
|
+
--uppercase
|
|
440
|
+
--uppercase=true
|
|
441
|
+
--uppercase=false
|
|
442
|
+
--no-uppercase
|
|
414
443
|
```
|
|
415
444
|
|
|
416
|
-
|
|
445
|
+
Invalid explicit values are rejected:
|
|
417
446
|
|
|
418
447
|
```sh
|
|
419
|
-
--
|
|
420
|
-
--
|
|
448
|
+
--uppercase=yes
|
|
449
|
+
--uppercase=
|
|
421
450
|
```
|
|
422
451
|
|
|
452
|
+
`--uppercase false` keeps `--uppercase` as `true` and leaves `false` as a positional
|
|
453
|
+
argument.
|
|
454
|
+
|
|
423
455
|
#### `type: 'number'`
|
|
424
456
|
|
|
425
457
|
```ts
|
|
@@ -449,7 +481,7 @@ const schema = {
|
|
|
449
481
|
type: 'string',
|
|
450
482
|
default: 'world'
|
|
451
483
|
},
|
|
452
|
-
|
|
484
|
+
uppercase: {
|
|
453
485
|
type: 'boolean'
|
|
454
486
|
}
|
|
455
487
|
} as const;
|
|
@@ -462,7 +494,7 @@ type Options = InferOptions<typeof schema>;
|
|
|
462
494
|
```ts
|
|
463
495
|
type Options = {
|
|
464
496
|
name: string;
|
|
465
|
-
|
|
497
|
+
uppercase: boolean | undefined;
|
|
466
498
|
};
|
|
467
499
|
```
|
|
468
500
|
|
|
@@ -504,16 +536,21 @@ type Name = 'hello formal';
|
|
|
504
536
|
|
|
505
537
|
### Facade of arguments
|
|
506
538
|
|
|
507
|
-
|
|
539
|
+
Use `--` to stop option parsing. The terminator itself is not included in
|
|
540
|
+
positionals; every following token is treated as positional, even when it starts
|
|
541
|
+
with `-`.
|
|
542
|
+
|
|
543
|
+
Short syntax is supported only for aliases declared in the option schema.
|
|
544
|
+
Boolean aliases use flag form, such as `-f`; string and number aliases use a
|
|
545
|
+
separate value, such as `-n value`.
|
|
508
546
|
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
| `--no-cache` | no |
|
|
547
|
+
Attached short values such as `-nvalue` and grouped short booleans such as
|
|
548
|
+
`-abc` are not supported yet. Unknown short tokens remain positional for
|
|
549
|
+
compatibility.
|
|
550
|
+
|
|
551
|
+
Negated syntax such as `--no-cache` is interpreted as `cache: false` when
|
|
552
|
+
`cache` is a known boolean option. Unknown negated options and negation for
|
|
553
|
+
string or number options are rejected.
|
|
517
554
|
|
|
518
555
|
### Error Messages
|
|
519
556
|
|
|
@@ -528,8 +565,11 @@ after printing `error.message`, terminal output can look like this:
|
|
|
528
565
|
$ node cli.js hello --unknown
|
|
529
566
|
Unexpected argument '--unknown'
|
|
530
567
|
|
|
531
|
-
$ node cli.js hello --
|
|
532
|
-
Expected '--
|
|
568
|
+
$ node cli.js hello --uppercase=yes
|
|
569
|
+
Expected '--uppercase' as boolean flag
|
|
570
|
+
|
|
571
|
+
$ node cli.js hello --name=
|
|
572
|
+
Expected '--name' as string
|
|
533
573
|
```
|
|
534
574
|
|
|
535
575
|
### Project Boundary
|