@optique/run 1.0.0-dev.429 → 1.0.0-dev.431
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/run.cjs +110 -21
- package/dist/run.d.cts +20 -0
- package/dist/run.d.ts +20 -0
- package/dist/run.js +111 -22
- package/package.json +2 -2
package/dist/run.cjs
CHANGED
|
@@ -8,31 +8,54 @@ function run(parserOrProgram, options = {}) {
|
|
|
8
8
|
return runImpl(parserOrProgram, options);
|
|
9
9
|
}
|
|
10
10
|
function runSync(parserOrProgram, options = {}) {
|
|
11
|
+
const contexts = options.contexts;
|
|
12
|
+
if (contexts && contexts.length > 0) {
|
|
13
|
+
const isProgram = "parser" in parserOrProgram && "metadata" in parserOrProgram;
|
|
14
|
+
let parser;
|
|
15
|
+
let programMetadata;
|
|
16
|
+
if (isProgram) {
|
|
17
|
+
const program = parserOrProgram;
|
|
18
|
+
parser = program.parser;
|
|
19
|
+
if (!options.programName) options = {
|
|
20
|
+
...options,
|
|
21
|
+
programName: program.metadata.name
|
|
22
|
+
};
|
|
23
|
+
programMetadata = {
|
|
24
|
+
brief: program.metadata.brief,
|
|
25
|
+
description: program.metadata.description,
|
|
26
|
+
examples: program.metadata.examples,
|
|
27
|
+
author: program.metadata.author,
|
|
28
|
+
bugs: program.metadata.bugs,
|
|
29
|
+
footer: program.metadata.footer
|
|
30
|
+
};
|
|
31
|
+
} else parser = parserOrProgram;
|
|
32
|
+
const { programName, args, coreOptions } = buildCoreOptions(options, programMetadata);
|
|
33
|
+
const contextOptions = {};
|
|
34
|
+
for (const key of Object.keys(options)) if (!knownRunOptionsKeys.has(key)) contextOptions[key] = options[key];
|
|
35
|
+
const runWithOptions = {
|
|
36
|
+
...coreOptions,
|
|
37
|
+
...contextOptions,
|
|
38
|
+
args
|
|
39
|
+
};
|
|
40
|
+
return (0, __optique_core_facade.runWithSync)(parser, programName, contexts, runWithOptions);
|
|
41
|
+
}
|
|
11
42
|
return runImpl(parserOrProgram, options);
|
|
12
43
|
}
|
|
13
44
|
function runAsync(parserOrProgram, options = {}) {
|
|
14
45
|
const result = runImpl(parserOrProgram, options);
|
|
15
46
|
return Promise.resolve(result);
|
|
16
47
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
description: program.metadata.description,
|
|
29
|
-
examples: program.metadata.examples,
|
|
30
|
-
author: program.metadata.author,
|
|
31
|
-
bugs: program.metadata.bugs,
|
|
32
|
-
footer: program.metadata.footer
|
|
33
|
-
};
|
|
34
|
-
} else parser = parserOrProgram;
|
|
35
|
-
const { programName = programNameFromProgram ?? node_path.default.basename(node_process.default.argv[1] || "cli"), args = node_process.default.argv.slice(2), colors = node_process.default.stdout.isTTY, maxWidth = node_process.default.stdout.columns, showDefault, showChoices, sectionOrder, help, version, completion, aboveError = "usage", errorExitCode = 1, brief = programMetadata?.brief, description = programMetadata?.description, examples = programMetadata?.examples, author = programMetadata?.author, bugs = programMetadata?.bugs, footer = programMetadata?.footer } = options;
|
|
48
|
+
/**
|
|
49
|
+
* Builds core run options from the simplified RunOptions format.
|
|
50
|
+
*
|
|
51
|
+
* Converts the user-friendly RunOptions (string-based help/version/completion)
|
|
52
|
+
* into the verbose CoreRunOptions format expected by `runParser()`, `runWith()`,
|
|
53
|
+
* and `runWithSync()` from `@optique/core/facade`.
|
|
54
|
+
*
|
|
55
|
+
* @internal
|
|
56
|
+
*/
|
|
57
|
+
function buildCoreOptions(options, programMetadata) {
|
|
58
|
+
const { programName = node_path.default.basename(node_process.default.argv[1] || "cli"), args = node_process.default.argv.slice(2), colors = node_process.default.stdout.isTTY, maxWidth = node_process.default.stdout.columns, showDefault, showChoices, sectionOrder, help, version, completion, aboveError = "usage", errorExitCode = 1, brief = programMetadata?.brief, description = programMetadata?.description, examples = programMetadata?.examples, author = programMetadata?.author, bugs = programMetadata?.bugs, footer = programMetadata?.footer } = options;
|
|
36
59
|
const helpConfig = help ? typeof help === "string" ? {
|
|
37
60
|
mode: help,
|
|
38
61
|
onShow: () => node_process.default.exit(0)
|
|
@@ -98,7 +121,7 @@ function runImpl(parserOrProgram, options = {}) {
|
|
|
98
121
|
onShow
|
|
99
122
|
};
|
|
100
123
|
})();
|
|
101
|
-
|
|
124
|
+
const coreOptions = {
|
|
102
125
|
stderr(line) {
|
|
103
126
|
node_process.default.stderr.write(`${line}\n`);
|
|
104
127
|
},
|
|
@@ -123,7 +146,73 @@ function runImpl(parserOrProgram, options = {}) {
|
|
|
123
146
|
onError() {
|
|
124
147
|
return node_process.default.exit(errorExitCode);
|
|
125
148
|
}
|
|
126
|
-
}
|
|
149
|
+
};
|
|
150
|
+
return {
|
|
151
|
+
programName,
|
|
152
|
+
args,
|
|
153
|
+
coreOptions
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Set of known RunOptions field names. Used by `runImpl()` to separate
|
|
158
|
+
* RunOptions fields from context-required options via rest-spread.
|
|
159
|
+
*/
|
|
160
|
+
const knownRunOptionsKeys = new Set([
|
|
161
|
+
"programName",
|
|
162
|
+
"args",
|
|
163
|
+
"colors",
|
|
164
|
+
"maxWidth",
|
|
165
|
+
"showDefault",
|
|
166
|
+
"showChoices",
|
|
167
|
+
"sectionOrder",
|
|
168
|
+
"help",
|
|
169
|
+
"version",
|
|
170
|
+
"completion",
|
|
171
|
+
"aboveError",
|
|
172
|
+
"errorExitCode",
|
|
173
|
+
"brief",
|
|
174
|
+
"description",
|
|
175
|
+
"examples",
|
|
176
|
+
"author",
|
|
177
|
+
"bugs",
|
|
178
|
+
"footer",
|
|
179
|
+
"contexts"
|
|
180
|
+
]);
|
|
181
|
+
function runImpl(parserOrProgram, options = {}) {
|
|
182
|
+
const isProgram = "parser" in parserOrProgram && "metadata" in parserOrProgram;
|
|
183
|
+
let parser;
|
|
184
|
+
let programMetadata;
|
|
185
|
+
if (isProgram) {
|
|
186
|
+
const program = parserOrProgram;
|
|
187
|
+
parser = program.parser;
|
|
188
|
+
const programNameFromProgram = program.metadata.name;
|
|
189
|
+
programMetadata = {
|
|
190
|
+
brief: program.metadata.brief,
|
|
191
|
+
description: program.metadata.description,
|
|
192
|
+
examples: program.metadata.examples,
|
|
193
|
+
author: program.metadata.author,
|
|
194
|
+
bugs: program.metadata.bugs,
|
|
195
|
+
footer: program.metadata.footer
|
|
196
|
+
};
|
|
197
|
+
if (!options.programName) options = {
|
|
198
|
+
...options,
|
|
199
|
+
programName: programNameFromProgram
|
|
200
|
+
};
|
|
201
|
+
} else parser = parserOrProgram;
|
|
202
|
+
const contexts = options.contexts;
|
|
203
|
+
if (contexts && contexts.length > 0) {
|
|
204
|
+
const { programName: programName$1, args: args$1, coreOptions: coreOptions$1 } = buildCoreOptions(options, programMetadata);
|
|
205
|
+
const contextOptions = {};
|
|
206
|
+
for (const key of Object.keys(options)) if (!knownRunOptionsKeys.has(key)) contextOptions[key] = options[key];
|
|
207
|
+
const runWithOptions = {
|
|
208
|
+
...coreOptions$1,
|
|
209
|
+
...contextOptions,
|
|
210
|
+
args: args$1
|
|
211
|
+
};
|
|
212
|
+
return (0, __optique_core_facade.runWith)(parser, programName$1, contexts, runWithOptions);
|
|
213
|
+
}
|
|
214
|
+
const { programName, args, coreOptions } = buildCoreOptions(options, programMetadata);
|
|
215
|
+
return (0, __optique_core_facade.runParser)(parser, programName, args, coreOptions);
|
|
127
216
|
}
|
|
128
217
|
|
|
129
218
|
//#endregion
|
package/dist/run.d.cts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { ShellCompletion } from "@optique/core/completion";
|
|
2
|
+
import { SourceContext } from "@optique/core/context";
|
|
3
|
+
import { ExtractRequiredOptions } from "@optique/core/facade";
|
|
2
4
|
import { InferMode, InferValue, Mode, ModeValue, Parser } from "@optique/core/parser";
|
|
3
5
|
import { Program } from "@optique/core/program";
|
|
4
6
|
import { DocSection, ShowChoicesOptions, ShowDefaultOptions } from "@optique/core/doc";
|
|
@@ -191,6 +193,15 @@ interface RunOptions {
|
|
|
191
193
|
* @since 0.4.0
|
|
192
194
|
*/
|
|
193
195
|
readonly footer?: Message;
|
|
196
|
+
/**
|
|
197
|
+
* Source contexts to use for two-phase parsing. When provided, the
|
|
198
|
+
* runner delegates to `runWith()` (or `runWithSync()` for sync parsers)
|
|
199
|
+
* from `@optique/core/facade`, which handles annotation collection and
|
|
200
|
+
* multi-phase parsing automatically.
|
|
201
|
+
*
|
|
202
|
+
* @since 1.0.0
|
|
203
|
+
*/
|
|
204
|
+
readonly contexts?: readonly SourceContext<unknown>[];
|
|
194
205
|
}
|
|
195
206
|
type CompletionHelpVisibility = "singular" | "plural" | "both" | "none";
|
|
196
207
|
type CompletionOptionsBase = {
|
|
@@ -299,6 +310,9 @@ type CompletionOptions = CompletionOptionsBoth | CompletionOptionsSingular | Com
|
|
|
299
310
|
*
|
|
300
311
|
* @since 0.11.0 Added support for {@link Program} objects.
|
|
301
312
|
*/
|
|
313
|
+
declare function run<T extends Parser<Mode, unknown, unknown>, TContexts extends readonly SourceContext<unknown>[]>(parser: T, options: RunOptions & {
|
|
314
|
+
readonly contexts: TContexts;
|
|
315
|
+
} & ExtractRequiredOptions<TContexts, InferValue<T>>): Promise<InferValue<T>>;
|
|
302
316
|
declare function run<T>(program: Program<"sync", T>, options?: RunOptions): T;
|
|
303
317
|
declare function run<T>(program: Program<"async", T>, options?: RunOptions): Promise<T>;
|
|
304
318
|
declare function run<T extends Parser<"sync", unknown, unknown>>(parser: T, options?: RunOptions): InferValue<T>;
|
|
@@ -317,6 +331,9 @@ declare function run<T extends Parser<Mode, unknown, unknown>>(parser: T, option
|
|
|
317
331
|
* @returns The parsed result if successful.
|
|
318
332
|
* @since 0.9.0
|
|
319
333
|
*/
|
|
334
|
+
declare function runSync<T extends Parser<"sync", unknown, unknown>, TContexts extends readonly SourceContext<unknown>[]>(parser: T, options: RunOptions & {
|
|
335
|
+
readonly contexts: TContexts;
|
|
336
|
+
} & ExtractRequiredOptions<TContexts, InferValue<T>>): InferValue<T>;
|
|
320
337
|
declare function runSync<T>(program: Program<"sync", T>, options?: RunOptions): T;
|
|
321
338
|
declare function runSync<T extends Parser<"sync", unknown, unknown>>(parser: T, options?: RunOptions): InferValue<T>;
|
|
322
339
|
/**
|
|
@@ -332,6 +349,9 @@ declare function runSync<T extends Parser<"sync", unknown, unknown>>(parser: T,
|
|
|
332
349
|
* @returns A Promise of the parsed result if successful.
|
|
333
350
|
* @since 0.9.0
|
|
334
351
|
*/
|
|
352
|
+
declare function runAsync<T extends Parser<Mode, unknown, unknown>, TContexts extends readonly SourceContext<unknown>[]>(parser: T, options: RunOptions & {
|
|
353
|
+
readonly contexts: TContexts;
|
|
354
|
+
} & ExtractRequiredOptions<TContexts, InferValue<T>>): Promise<InferValue<T>>;
|
|
335
355
|
declare function runAsync<T>(program: Program<"sync", T>, options?: RunOptions): Promise<T>;
|
|
336
356
|
declare function runAsync<T>(program: Program<"async", T>, options?: RunOptions): Promise<T>;
|
|
337
357
|
declare function runAsync<T extends Parser<Mode, unknown, unknown>>(parser: T, options?: RunOptions): Promise<InferValue<T>>;
|
package/dist/run.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { ExtractRequiredOptions } from "@optique/core/facade";
|
|
1
2
|
import { Message } from "@optique/core/message";
|
|
2
3
|
import { ShellCompletion } from "@optique/core/completion";
|
|
4
|
+
import { SourceContext } from "@optique/core/context";
|
|
3
5
|
import { InferMode, InferValue, Mode, ModeValue, Parser } from "@optique/core/parser";
|
|
4
6
|
import { Program } from "@optique/core/program";
|
|
5
7
|
import { DocSection, ShowChoicesOptions, ShowDefaultOptions } from "@optique/core/doc";
|
|
@@ -191,6 +193,15 @@ interface RunOptions {
|
|
|
191
193
|
* @since 0.4.0
|
|
192
194
|
*/
|
|
193
195
|
readonly footer?: Message;
|
|
196
|
+
/**
|
|
197
|
+
* Source contexts to use for two-phase parsing. When provided, the
|
|
198
|
+
* runner delegates to `runWith()` (or `runWithSync()` for sync parsers)
|
|
199
|
+
* from `@optique/core/facade`, which handles annotation collection and
|
|
200
|
+
* multi-phase parsing automatically.
|
|
201
|
+
*
|
|
202
|
+
* @since 1.0.0
|
|
203
|
+
*/
|
|
204
|
+
readonly contexts?: readonly SourceContext<unknown>[];
|
|
194
205
|
}
|
|
195
206
|
type CompletionHelpVisibility = "singular" | "plural" | "both" | "none";
|
|
196
207
|
type CompletionOptionsBase = {
|
|
@@ -299,6 +310,9 @@ type CompletionOptions = CompletionOptionsBoth | CompletionOptionsSingular | Com
|
|
|
299
310
|
*
|
|
300
311
|
* @since 0.11.0 Added support for {@link Program} objects.
|
|
301
312
|
*/
|
|
313
|
+
declare function run<T extends Parser<Mode, unknown, unknown>, TContexts extends readonly SourceContext<unknown>[]>(parser: T, options: RunOptions & {
|
|
314
|
+
readonly contexts: TContexts;
|
|
315
|
+
} & ExtractRequiredOptions<TContexts, InferValue<T>>): Promise<InferValue<T>>;
|
|
302
316
|
declare function run<T>(program: Program<"sync", T>, options?: RunOptions): T;
|
|
303
317
|
declare function run<T>(program: Program<"async", T>, options?: RunOptions): Promise<T>;
|
|
304
318
|
declare function run<T extends Parser<"sync", unknown, unknown>>(parser: T, options?: RunOptions): InferValue<T>;
|
|
@@ -317,6 +331,9 @@ declare function run<T extends Parser<Mode, unknown, unknown>>(parser: T, option
|
|
|
317
331
|
* @returns The parsed result if successful.
|
|
318
332
|
* @since 0.9.0
|
|
319
333
|
*/
|
|
334
|
+
declare function runSync<T extends Parser<"sync", unknown, unknown>, TContexts extends readonly SourceContext<unknown>[]>(parser: T, options: RunOptions & {
|
|
335
|
+
readonly contexts: TContexts;
|
|
336
|
+
} & ExtractRequiredOptions<TContexts, InferValue<T>>): InferValue<T>;
|
|
320
337
|
declare function runSync<T>(program: Program<"sync", T>, options?: RunOptions): T;
|
|
321
338
|
declare function runSync<T extends Parser<"sync", unknown, unknown>>(parser: T, options?: RunOptions): InferValue<T>;
|
|
322
339
|
/**
|
|
@@ -332,6 +349,9 @@ declare function runSync<T extends Parser<"sync", unknown, unknown>>(parser: T,
|
|
|
332
349
|
* @returns A Promise of the parsed result if successful.
|
|
333
350
|
* @since 0.9.0
|
|
334
351
|
*/
|
|
352
|
+
declare function runAsync<T extends Parser<Mode, unknown, unknown>, TContexts extends readonly SourceContext<unknown>[]>(parser: T, options: RunOptions & {
|
|
353
|
+
readonly contexts: TContexts;
|
|
354
|
+
} & ExtractRequiredOptions<TContexts, InferValue<T>>): Promise<InferValue<T>>;
|
|
335
355
|
declare function runAsync<T>(program: Program<"sync", T>, options?: RunOptions): Promise<T>;
|
|
336
356
|
declare function runAsync<T>(program: Program<"async", T>, options?: RunOptions): Promise<T>;
|
|
337
357
|
declare function runAsync<T extends Parser<Mode, unknown, unknown>>(parser: T, options?: RunOptions): Promise<InferValue<T>>;
|
package/dist/run.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { runParser } from "@optique/core/facade";
|
|
1
|
+
import { runParser, runWith, runWithSync } from "@optique/core/facade";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import process from "node:process";
|
|
4
4
|
|
|
@@ -7,31 +7,54 @@ function run(parserOrProgram, options = {}) {
|
|
|
7
7
|
return runImpl(parserOrProgram, options);
|
|
8
8
|
}
|
|
9
9
|
function runSync(parserOrProgram, options = {}) {
|
|
10
|
+
const contexts = options.contexts;
|
|
11
|
+
if (contexts && contexts.length > 0) {
|
|
12
|
+
const isProgram = "parser" in parserOrProgram && "metadata" in parserOrProgram;
|
|
13
|
+
let parser;
|
|
14
|
+
let programMetadata;
|
|
15
|
+
if (isProgram) {
|
|
16
|
+
const program = parserOrProgram;
|
|
17
|
+
parser = program.parser;
|
|
18
|
+
if (!options.programName) options = {
|
|
19
|
+
...options,
|
|
20
|
+
programName: program.metadata.name
|
|
21
|
+
};
|
|
22
|
+
programMetadata = {
|
|
23
|
+
brief: program.metadata.brief,
|
|
24
|
+
description: program.metadata.description,
|
|
25
|
+
examples: program.metadata.examples,
|
|
26
|
+
author: program.metadata.author,
|
|
27
|
+
bugs: program.metadata.bugs,
|
|
28
|
+
footer: program.metadata.footer
|
|
29
|
+
};
|
|
30
|
+
} else parser = parserOrProgram;
|
|
31
|
+
const { programName, args, coreOptions } = buildCoreOptions(options, programMetadata);
|
|
32
|
+
const contextOptions = {};
|
|
33
|
+
for (const key of Object.keys(options)) if (!knownRunOptionsKeys.has(key)) contextOptions[key] = options[key];
|
|
34
|
+
const runWithOptions = {
|
|
35
|
+
...coreOptions,
|
|
36
|
+
...contextOptions,
|
|
37
|
+
args
|
|
38
|
+
};
|
|
39
|
+
return runWithSync(parser, programName, contexts, runWithOptions);
|
|
40
|
+
}
|
|
10
41
|
return runImpl(parserOrProgram, options);
|
|
11
42
|
}
|
|
12
43
|
function runAsync(parserOrProgram, options = {}) {
|
|
13
44
|
const result = runImpl(parserOrProgram, options);
|
|
14
45
|
return Promise.resolve(result);
|
|
15
46
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
description: program.metadata.description,
|
|
28
|
-
examples: program.metadata.examples,
|
|
29
|
-
author: program.metadata.author,
|
|
30
|
-
bugs: program.metadata.bugs,
|
|
31
|
-
footer: program.metadata.footer
|
|
32
|
-
};
|
|
33
|
-
} else parser = parserOrProgram;
|
|
34
|
-
const { programName = programNameFromProgram ?? path.basename(process.argv[1] || "cli"), args = process.argv.slice(2), colors = process.stdout.isTTY, maxWidth = process.stdout.columns, showDefault, showChoices, sectionOrder, help, version, completion, aboveError = "usage", errorExitCode = 1, brief = programMetadata?.brief, description = programMetadata?.description, examples = programMetadata?.examples, author = programMetadata?.author, bugs = programMetadata?.bugs, footer = programMetadata?.footer } = options;
|
|
47
|
+
/**
|
|
48
|
+
* Builds core run options from the simplified RunOptions format.
|
|
49
|
+
*
|
|
50
|
+
* Converts the user-friendly RunOptions (string-based help/version/completion)
|
|
51
|
+
* into the verbose CoreRunOptions format expected by `runParser()`, `runWith()`,
|
|
52
|
+
* and `runWithSync()` from `@optique/core/facade`.
|
|
53
|
+
*
|
|
54
|
+
* @internal
|
|
55
|
+
*/
|
|
56
|
+
function buildCoreOptions(options, programMetadata) {
|
|
57
|
+
const { programName = path.basename(process.argv[1] || "cli"), args = process.argv.slice(2), colors = process.stdout.isTTY, maxWidth = process.stdout.columns, showDefault, showChoices, sectionOrder, help, version, completion, aboveError = "usage", errorExitCode = 1, brief = programMetadata?.brief, description = programMetadata?.description, examples = programMetadata?.examples, author = programMetadata?.author, bugs = programMetadata?.bugs, footer = programMetadata?.footer } = options;
|
|
35
58
|
const helpConfig = help ? typeof help === "string" ? {
|
|
36
59
|
mode: help,
|
|
37
60
|
onShow: () => process.exit(0)
|
|
@@ -97,7 +120,7 @@ function runImpl(parserOrProgram, options = {}) {
|
|
|
97
120
|
onShow
|
|
98
121
|
};
|
|
99
122
|
})();
|
|
100
|
-
|
|
123
|
+
const coreOptions = {
|
|
101
124
|
stderr(line) {
|
|
102
125
|
process.stderr.write(`${line}\n`);
|
|
103
126
|
},
|
|
@@ -122,7 +145,73 @@ function runImpl(parserOrProgram, options = {}) {
|
|
|
122
145
|
onError() {
|
|
123
146
|
return process.exit(errorExitCode);
|
|
124
147
|
}
|
|
125
|
-
}
|
|
148
|
+
};
|
|
149
|
+
return {
|
|
150
|
+
programName,
|
|
151
|
+
args,
|
|
152
|
+
coreOptions
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Set of known RunOptions field names. Used by `runImpl()` to separate
|
|
157
|
+
* RunOptions fields from context-required options via rest-spread.
|
|
158
|
+
*/
|
|
159
|
+
const knownRunOptionsKeys = new Set([
|
|
160
|
+
"programName",
|
|
161
|
+
"args",
|
|
162
|
+
"colors",
|
|
163
|
+
"maxWidth",
|
|
164
|
+
"showDefault",
|
|
165
|
+
"showChoices",
|
|
166
|
+
"sectionOrder",
|
|
167
|
+
"help",
|
|
168
|
+
"version",
|
|
169
|
+
"completion",
|
|
170
|
+
"aboveError",
|
|
171
|
+
"errorExitCode",
|
|
172
|
+
"brief",
|
|
173
|
+
"description",
|
|
174
|
+
"examples",
|
|
175
|
+
"author",
|
|
176
|
+
"bugs",
|
|
177
|
+
"footer",
|
|
178
|
+
"contexts"
|
|
179
|
+
]);
|
|
180
|
+
function runImpl(parserOrProgram, options = {}) {
|
|
181
|
+
const isProgram = "parser" in parserOrProgram && "metadata" in parserOrProgram;
|
|
182
|
+
let parser;
|
|
183
|
+
let programMetadata;
|
|
184
|
+
if (isProgram) {
|
|
185
|
+
const program = parserOrProgram;
|
|
186
|
+
parser = program.parser;
|
|
187
|
+
const programNameFromProgram = program.metadata.name;
|
|
188
|
+
programMetadata = {
|
|
189
|
+
brief: program.metadata.brief,
|
|
190
|
+
description: program.metadata.description,
|
|
191
|
+
examples: program.metadata.examples,
|
|
192
|
+
author: program.metadata.author,
|
|
193
|
+
bugs: program.metadata.bugs,
|
|
194
|
+
footer: program.metadata.footer
|
|
195
|
+
};
|
|
196
|
+
if (!options.programName) options = {
|
|
197
|
+
...options,
|
|
198
|
+
programName: programNameFromProgram
|
|
199
|
+
};
|
|
200
|
+
} else parser = parserOrProgram;
|
|
201
|
+
const contexts = options.contexts;
|
|
202
|
+
if (contexts && contexts.length > 0) {
|
|
203
|
+
const { programName: programName$1, args: args$1, coreOptions: coreOptions$1 } = buildCoreOptions(options, programMetadata);
|
|
204
|
+
const contextOptions = {};
|
|
205
|
+
for (const key of Object.keys(options)) if (!knownRunOptionsKeys.has(key)) contextOptions[key] = options[key];
|
|
206
|
+
const runWithOptions = {
|
|
207
|
+
...coreOptions$1,
|
|
208
|
+
...contextOptions,
|
|
209
|
+
args: args$1
|
|
210
|
+
};
|
|
211
|
+
return runWith(parser, programName$1, contexts, runWithOptions);
|
|
212
|
+
}
|
|
213
|
+
const { programName, args, coreOptions } = buildCoreOptions(options, programMetadata);
|
|
214
|
+
return runParser(parser, programName, args, coreOptions);
|
|
126
215
|
}
|
|
127
216
|
|
|
128
217
|
//#endregion
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@optique/run",
|
|
3
|
-
"version": "1.0.0-dev.
|
|
3
|
+
"version": "1.0.0-dev.431+01c1abaf",
|
|
4
4
|
"description": "Type-safe combinatorial command-line interface parser",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"CLI",
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
},
|
|
71
71
|
"sideEffects": false,
|
|
72
72
|
"dependencies": {
|
|
73
|
-
"@optique/core": "1.0.0-dev.
|
|
73
|
+
"@optique/core": "1.0.0-dev.431+01c1abaf"
|
|
74
74
|
},
|
|
75
75
|
"devDependencies": {
|
|
76
76
|
"@types/node": "^20.19.9",
|