@optique/core 0.10.0-dev.360 → 0.10.0-dev.363
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/facade.cjs +23 -13
- package/dist/facade.d.cts +77 -41
- package/dist/facade.d.ts +77 -41
- package/dist/facade.js +23 -13
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/package.json +1 -1
package/dist/facade.cjs
CHANGED
|
@@ -55,7 +55,7 @@ function createVersionParser(mode) {
|
|
|
55
55
|
/**
|
|
56
56
|
* Creates completion parsers based on the specified mode.
|
|
57
57
|
*/
|
|
58
|
-
function createCompletionParser(mode, programName, availableShells, name = "both") {
|
|
58
|
+
function createCompletionParser(mode, programName, availableShells, name = "both", helpVisibility = name) {
|
|
59
59
|
const shellList = [];
|
|
60
60
|
for (const shell in availableShells) {
|
|
61
61
|
if (shellList.length > 0) shellList.push(require_message.text(", "));
|
|
@@ -78,18 +78,27 @@ function createCompletionParser(mode, programName, availableShells, name = "both
|
|
|
78
78
|
`
|
|
79
79
|
};
|
|
80
80
|
const completionCommands = [];
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
const showSingular = helpVisibility === "singular" || helpVisibility === "both";
|
|
82
|
+
const showPlural = helpVisibility === "plural" || helpVisibility === "both";
|
|
83
|
+
if (name === "singular" || name === "both") completionCommands.push(require_primitives.command("completion", completionInner, {
|
|
84
|
+
...completionCommandConfig,
|
|
85
|
+
hidden: !showSingular
|
|
86
|
+
}));
|
|
87
|
+
if (name === "plural" || name === "both") completionCommands.push(require_primitives.command("completions", completionInner, {
|
|
88
|
+
...completionCommandConfig,
|
|
89
|
+
hidden: !showPlural
|
|
90
|
+
}));
|
|
83
91
|
const completionCommand = require_constructs.longestMatch(...completionCommands);
|
|
84
|
-
const
|
|
85
|
-
if (name === "singular" || name === "both")
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
92
|
+
const completionOptions = [];
|
|
93
|
+
if (name === "singular" || name === "both") completionOptions.push(require_primitives.option("--completion", require_valueparser.string({ metavar: "SHELL" }), {
|
|
94
|
+
description: require_message.message`Generate shell completion script.`,
|
|
95
|
+
hidden: !showSingular
|
|
96
|
+
}));
|
|
97
|
+
if (name === "plural" || name === "both") completionOptions.push(require_primitives.option("--completions", require_valueparser.string({ metavar: "SHELL" }), {
|
|
98
|
+
description: require_message.message`Generate shell completion script.`,
|
|
99
|
+
hidden: !showPlural
|
|
100
|
+
}));
|
|
101
|
+
const completionOption = completionOptions.length === 1 ? completionOptions[0] : require_constructs.longestMatch(completionOptions[0], completionOptions[1]);
|
|
93
102
|
const argsParser = require_modifiers.withDefault(require_modifiers.multiple(require_primitives.argument(require_valueparser.string({ metavar: "ARG" }), { description: require_message.message`Command line arguments for completion suggestions (used by shell integration; you usually don't need to provide this).` })), []);
|
|
94
103
|
const optionParser = require_constructs.object({
|
|
95
104
|
shell: completionOption,
|
|
@@ -441,6 +450,7 @@ function runParser(parserOrProgram, programNameOrArgs, argsOrOptions, optionsPar
|
|
|
441
450
|
const onVersion = options.version?.onShow ?? (() => ({}));
|
|
442
451
|
const completionMode = options.completion?.mode ?? "both";
|
|
443
452
|
const completionName = options.completion?.name ?? "both";
|
|
453
|
+
const completionHelpVisibility = options.completion?.helpVisibility ?? completionName;
|
|
444
454
|
const onCompletion = options.completion?.onShow ?? (() => ({}));
|
|
445
455
|
const defaultShells = {
|
|
446
456
|
bash: require_completion.bash,
|
|
@@ -467,7 +477,7 @@ function runParser(parserOrProgram, programNameOrArgs, argsOrOptions, optionsPar
|
|
|
467
477
|
const completionParsers = completion === "none" ? {
|
|
468
478
|
completionCommand: null,
|
|
469
479
|
completionOption: null
|
|
470
|
-
} : createCompletionParser(completion, programName, availableShells, completionName);
|
|
480
|
+
} : createCompletionParser(completion, programName, availableShells, completionName, completionHelpVisibility);
|
|
471
481
|
if (options.completion) {
|
|
472
482
|
const hasHelpOption = args.includes("--help");
|
|
473
483
|
if ((completionMode === "command" || completionMode === "both") && args.length >= 1 && ((completionName === "singular" || completionName === "both" ? args[0] === "completion" : false) || (completionName === "plural" || completionName === "both" ? args[0] === "completions" : false)) && !hasHelpOption) return handleCompletion(args.slice(1), programName, parser, completionParsers.completionCommand, stdout, stderr, onCompletion, onError, availableShells, colors, maxWidth, completionMode, completionName);
|
package/dist/facade.d.cts
CHANGED
|
@@ -7,6 +7,81 @@ import { Program } from "./program.cjs";
|
|
|
7
7
|
|
|
8
8
|
//#region src/facade.d.ts
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* Naming style for shell completion command and option aliases.
|
|
12
|
+
*
|
|
13
|
+
* @since 0.10.0
|
|
14
|
+
*/
|
|
15
|
+
type CompletionName = "singular" | "plural" | "both";
|
|
16
|
+
/**
|
|
17
|
+
* Visibility policy for completion entries in help and usage output.
|
|
18
|
+
*
|
|
19
|
+
* @since 0.10.0
|
|
20
|
+
*/
|
|
21
|
+
type CompletionHelpVisibility = CompletionName | "none";
|
|
22
|
+
type CompletionConfigBase<THelp> = {
|
|
23
|
+
/**
|
|
24
|
+
* Determines how completion is made available:
|
|
25
|
+
*
|
|
26
|
+
* - `"command"`: Only the `completion` subcommand is available
|
|
27
|
+
* - `"option"`: Only the `--completion` option is available
|
|
28
|
+
* - `"both"`: Both `completion` subcommand and `--completion` option are available
|
|
29
|
+
*
|
|
30
|
+
* @default `"both"`
|
|
31
|
+
*/
|
|
32
|
+
readonly mode?: "command" | "option" | "both";
|
|
33
|
+
/**
|
|
34
|
+
* Available shell completions. By default, includes `bash`, `fish`, `nu`,
|
|
35
|
+
* `pwsh`, and `zsh`. You can provide additional custom shell completions or
|
|
36
|
+
* override the defaults.
|
|
37
|
+
*
|
|
38
|
+
* @default `{ bash, fish, nu, pwsh, zsh }`
|
|
39
|
+
*/
|
|
40
|
+
readonly shells?: Record<string, ShellCompletion>;
|
|
41
|
+
/**
|
|
42
|
+
* Callback function invoked when completion is requested. The function can
|
|
43
|
+
* optionally receive an exit code parameter.
|
|
44
|
+
*
|
|
45
|
+
* You usually want to pass `process.exit` on Node.js or Bun and `Deno.exit`
|
|
46
|
+
* on Deno to this option.
|
|
47
|
+
*
|
|
48
|
+
* @default Returns `void` when completion is shown.
|
|
49
|
+
*/
|
|
50
|
+
readonly onShow?: (() => THelp) | ((exitCode: number) => THelp);
|
|
51
|
+
};
|
|
52
|
+
type CompletionConfigBoth<THelp> = CompletionConfigBase<THelp> & {
|
|
53
|
+
/**
|
|
54
|
+
* Determines whether to use singular or plural naming for completion command/option.
|
|
55
|
+
*
|
|
56
|
+
* - `"singular"`: Use `completion` / `--completion`
|
|
57
|
+
* - `"plural"`: Use `completions` / `--completions`
|
|
58
|
+
* - `"both"`: Use both singular and plural forms
|
|
59
|
+
*
|
|
60
|
+
* @default `"both"`
|
|
61
|
+
*/
|
|
62
|
+
readonly name?: "both";
|
|
63
|
+
/**
|
|
64
|
+
* Controls which completion entries appear in help and usage output.
|
|
65
|
+
*
|
|
66
|
+
* - `"both"`: Show both singular and plural entries
|
|
67
|
+
* - `"singular"`: Show only singular entries
|
|
68
|
+
* - `"plural"`: Show only plural entries
|
|
69
|
+
* - `"none"`: Hide completion entries from help and usage
|
|
70
|
+
*
|
|
71
|
+
* @default Matches `name`
|
|
72
|
+
* @since 0.10.0
|
|
73
|
+
*/
|
|
74
|
+
readonly helpVisibility?: CompletionHelpVisibility;
|
|
75
|
+
};
|
|
76
|
+
type CompletionConfigSingular<THelp> = CompletionConfigBase<THelp> & {
|
|
77
|
+
readonly name: "singular";
|
|
78
|
+
readonly helpVisibility?: "singular" | "none";
|
|
79
|
+
};
|
|
80
|
+
type CompletionConfigPlural<THelp> = CompletionConfigBase<THelp> & {
|
|
81
|
+
readonly name: "plural";
|
|
82
|
+
readonly helpVisibility?: "plural" | "none";
|
|
83
|
+
};
|
|
84
|
+
type CompletionConfig<THelp> = CompletionConfigBoth<THelp> | CompletionConfigSingular<THelp> | CompletionConfigPlural<THelp>;
|
|
10
85
|
/**
|
|
11
86
|
* Configuration options for the {@link run} function.
|
|
12
87
|
*
|
|
@@ -95,46 +170,7 @@ interface RunOptions<THelp, TError> {
|
|
|
95
170
|
* Completion configuration. When provided, enables shell completion functionality.
|
|
96
171
|
* @since 0.6.0
|
|
97
172
|
*/
|
|
98
|
-
readonly completion?:
|
|
99
|
-
/**
|
|
100
|
-
* Determines how completion is made available:
|
|
101
|
-
*
|
|
102
|
-
* - `"command"`: Only the `completion` subcommand is available
|
|
103
|
-
* - `"option"`: Only the `--completion` option is available
|
|
104
|
-
* - `"both"`: Both `completion` subcommand and `--completion` option are available
|
|
105
|
-
*
|
|
106
|
-
* @default `"both"`
|
|
107
|
-
*/
|
|
108
|
-
readonly mode?: "command" | "option" | "both";
|
|
109
|
-
/**
|
|
110
|
-
* Determines whether to use singular or plural naming for completion command/option.
|
|
111
|
-
*
|
|
112
|
-
* - `"singular"`: Use `completion` / `--completion`
|
|
113
|
-
* - `"plural"`: Use `completions` / `--completions`
|
|
114
|
-
* - `"both"`: Use both singular and plural forms
|
|
115
|
-
*
|
|
116
|
-
* @default `"both"`
|
|
117
|
-
*/
|
|
118
|
-
readonly name?: "singular" | "plural" | "both";
|
|
119
|
-
/**
|
|
120
|
-
* Available shell completions. By default, includes `bash`, `fish`, `nu`,
|
|
121
|
-
* `pwsh`, and `zsh`. You can provide additional custom shell completions or
|
|
122
|
-
* override the defaults.
|
|
123
|
-
*
|
|
124
|
-
* @default `{ bash, fish, nu, pwsh, zsh }`
|
|
125
|
-
*/
|
|
126
|
-
readonly shells?: Record<string, ShellCompletion>;
|
|
127
|
-
/**
|
|
128
|
-
* Callback function invoked when completion is requested. The function can
|
|
129
|
-
* optionally receive an exit code parameter.
|
|
130
|
-
*
|
|
131
|
-
* You usually want to pass `process.exit` on Node.js or Bun and `Deno.exit`
|
|
132
|
-
* on Deno to this option.
|
|
133
|
-
*
|
|
134
|
-
* @default Returns `void` when completion is shown.
|
|
135
|
-
*/
|
|
136
|
-
readonly onShow?: (() => THelp) | ((exitCode: number) => THelp);
|
|
137
|
-
};
|
|
173
|
+
readonly completion?: CompletionConfig<THelp>;
|
|
138
174
|
/**
|
|
139
175
|
* What to display above error messages:
|
|
140
176
|
* - `"usage"`: Show usage information
|
|
@@ -412,4 +448,4 @@ declare function runWithSync<TParser extends Parser<"sync", unknown, unknown>, T
|
|
|
412
448
|
*/
|
|
413
449
|
declare function runWithAsync<TParser extends Parser<Mode, unknown, unknown>, TContexts extends readonly SourceContext<unknown>[], THelp = void, TError = never>(parser: TParser, programName: string, contexts: TContexts, options: RunWithOptions<THelp, TError> & ExtractRequiredOptions<TContexts, InferValue<TParser>>): Promise<InferValue<TParser>>;
|
|
414
450
|
//#endregion
|
|
415
|
-
export { ExtractRequiredOptions, type ParserValuePlaceholder, RunOptions, RunParserError, RunWithOptions, type SourceContext, SubstituteParserValue, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync };
|
|
451
|
+
export { CompletionHelpVisibility, CompletionName, ExtractRequiredOptions, type ParserValuePlaceholder, RunOptions, RunParserError, RunWithOptions, type SourceContext, SubstituteParserValue, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync };
|
package/dist/facade.d.ts
CHANGED
|
@@ -7,6 +7,81 @@ import { Program } from "./program.js";
|
|
|
7
7
|
|
|
8
8
|
//#region src/facade.d.ts
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* Naming style for shell completion command and option aliases.
|
|
12
|
+
*
|
|
13
|
+
* @since 0.10.0
|
|
14
|
+
*/
|
|
15
|
+
type CompletionName = "singular" | "plural" | "both";
|
|
16
|
+
/**
|
|
17
|
+
* Visibility policy for completion entries in help and usage output.
|
|
18
|
+
*
|
|
19
|
+
* @since 0.10.0
|
|
20
|
+
*/
|
|
21
|
+
type CompletionHelpVisibility = CompletionName | "none";
|
|
22
|
+
type CompletionConfigBase<THelp> = {
|
|
23
|
+
/**
|
|
24
|
+
* Determines how completion is made available:
|
|
25
|
+
*
|
|
26
|
+
* - `"command"`: Only the `completion` subcommand is available
|
|
27
|
+
* - `"option"`: Only the `--completion` option is available
|
|
28
|
+
* - `"both"`: Both `completion` subcommand and `--completion` option are available
|
|
29
|
+
*
|
|
30
|
+
* @default `"both"`
|
|
31
|
+
*/
|
|
32
|
+
readonly mode?: "command" | "option" | "both";
|
|
33
|
+
/**
|
|
34
|
+
* Available shell completions. By default, includes `bash`, `fish`, `nu`,
|
|
35
|
+
* `pwsh`, and `zsh`. You can provide additional custom shell completions or
|
|
36
|
+
* override the defaults.
|
|
37
|
+
*
|
|
38
|
+
* @default `{ bash, fish, nu, pwsh, zsh }`
|
|
39
|
+
*/
|
|
40
|
+
readonly shells?: Record<string, ShellCompletion>;
|
|
41
|
+
/**
|
|
42
|
+
* Callback function invoked when completion is requested. The function can
|
|
43
|
+
* optionally receive an exit code parameter.
|
|
44
|
+
*
|
|
45
|
+
* You usually want to pass `process.exit` on Node.js or Bun and `Deno.exit`
|
|
46
|
+
* on Deno to this option.
|
|
47
|
+
*
|
|
48
|
+
* @default Returns `void` when completion is shown.
|
|
49
|
+
*/
|
|
50
|
+
readonly onShow?: (() => THelp) | ((exitCode: number) => THelp);
|
|
51
|
+
};
|
|
52
|
+
type CompletionConfigBoth<THelp> = CompletionConfigBase<THelp> & {
|
|
53
|
+
/**
|
|
54
|
+
* Determines whether to use singular or plural naming for completion command/option.
|
|
55
|
+
*
|
|
56
|
+
* - `"singular"`: Use `completion` / `--completion`
|
|
57
|
+
* - `"plural"`: Use `completions` / `--completions`
|
|
58
|
+
* - `"both"`: Use both singular and plural forms
|
|
59
|
+
*
|
|
60
|
+
* @default `"both"`
|
|
61
|
+
*/
|
|
62
|
+
readonly name?: "both";
|
|
63
|
+
/**
|
|
64
|
+
* Controls which completion entries appear in help and usage output.
|
|
65
|
+
*
|
|
66
|
+
* - `"both"`: Show both singular and plural entries
|
|
67
|
+
* - `"singular"`: Show only singular entries
|
|
68
|
+
* - `"plural"`: Show only plural entries
|
|
69
|
+
* - `"none"`: Hide completion entries from help and usage
|
|
70
|
+
*
|
|
71
|
+
* @default Matches `name`
|
|
72
|
+
* @since 0.10.0
|
|
73
|
+
*/
|
|
74
|
+
readonly helpVisibility?: CompletionHelpVisibility;
|
|
75
|
+
};
|
|
76
|
+
type CompletionConfigSingular<THelp> = CompletionConfigBase<THelp> & {
|
|
77
|
+
readonly name: "singular";
|
|
78
|
+
readonly helpVisibility?: "singular" | "none";
|
|
79
|
+
};
|
|
80
|
+
type CompletionConfigPlural<THelp> = CompletionConfigBase<THelp> & {
|
|
81
|
+
readonly name: "plural";
|
|
82
|
+
readonly helpVisibility?: "plural" | "none";
|
|
83
|
+
};
|
|
84
|
+
type CompletionConfig<THelp> = CompletionConfigBoth<THelp> | CompletionConfigSingular<THelp> | CompletionConfigPlural<THelp>;
|
|
10
85
|
/**
|
|
11
86
|
* Configuration options for the {@link run} function.
|
|
12
87
|
*
|
|
@@ -95,46 +170,7 @@ interface RunOptions<THelp, TError> {
|
|
|
95
170
|
* Completion configuration. When provided, enables shell completion functionality.
|
|
96
171
|
* @since 0.6.0
|
|
97
172
|
*/
|
|
98
|
-
readonly completion?:
|
|
99
|
-
/**
|
|
100
|
-
* Determines how completion is made available:
|
|
101
|
-
*
|
|
102
|
-
* - `"command"`: Only the `completion` subcommand is available
|
|
103
|
-
* - `"option"`: Only the `--completion` option is available
|
|
104
|
-
* - `"both"`: Both `completion` subcommand and `--completion` option are available
|
|
105
|
-
*
|
|
106
|
-
* @default `"both"`
|
|
107
|
-
*/
|
|
108
|
-
readonly mode?: "command" | "option" | "both";
|
|
109
|
-
/**
|
|
110
|
-
* Determines whether to use singular or plural naming for completion command/option.
|
|
111
|
-
*
|
|
112
|
-
* - `"singular"`: Use `completion` / `--completion`
|
|
113
|
-
* - `"plural"`: Use `completions` / `--completions`
|
|
114
|
-
* - `"both"`: Use both singular and plural forms
|
|
115
|
-
*
|
|
116
|
-
* @default `"both"`
|
|
117
|
-
*/
|
|
118
|
-
readonly name?: "singular" | "plural" | "both";
|
|
119
|
-
/**
|
|
120
|
-
* Available shell completions. By default, includes `bash`, `fish`, `nu`,
|
|
121
|
-
* `pwsh`, and `zsh`. You can provide additional custom shell completions or
|
|
122
|
-
* override the defaults.
|
|
123
|
-
*
|
|
124
|
-
* @default `{ bash, fish, nu, pwsh, zsh }`
|
|
125
|
-
*/
|
|
126
|
-
readonly shells?: Record<string, ShellCompletion>;
|
|
127
|
-
/**
|
|
128
|
-
* Callback function invoked when completion is requested. The function can
|
|
129
|
-
* optionally receive an exit code parameter.
|
|
130
|
-
*
|
|
131
|
-
* You usually want to pass `process.exit` on Node.js or Bun and `Deno.exit`
|
|
132
|
-
* on Deno to this option.
|
|
133
|
-
*
|
|
134
|
-
* @default Returns `void` when completion is shown.
|
|
135
|
-
*/
|
|
136
|
-
readonly onShow?: (() => THelp) | ((exitCode: number) => THelp);
|
|
137
|
-
};
|
|
173
|
+
readonly completion?: CompletionConfig<THelp>;
|
|
138
174
|
/**
|
|
139
175
|
* What to display above error messages:
|
|
140
176
|
* - `"usage"`: Show usage information
|
|
@@ -412,4 +448,4 @@ declare function runWithSync<TParser extends Parser<"sync", unknown, unknown>, T
|
|
|
412
448
|
*/
|
|
413
449
|
declare function runWithAsync<TParser extends Parser<Mode, unknown, unknown>, TContexts extends readonly SourceContext<unknown>[], THelp = void, TError = never>(parser: TParser, programName: string, contexts: TContexts, options: RunWithOptions<THelp, TError> & ExtractRequiredOptions<TContexts, InferValue<TParser>>): Promise<InferValue<TParser>>;
|
|
414
450
|
//#endregion
|
|
415
|
-
export { ExtractRequiredOptions, type ParserValuePlaceholder, RunOptions, RunParserError, RunWithOptions, type SourceContext, SubstituteParserValue, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync };
|
|
451
|
+
export { CompletionHelpVisibility, CompletionName, ExtractRequiredOptions, type ParserValuePlaceholder, RunOptions, RunParserError, RunWithOptions, type SourceContext, SubstituteParserValue, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync };
|
package/dist/facade.js
CHANGED
|
@@ -55,7 +55,7 @@ function createVersionParser(mode) {
|
|
|
55
55
|
/**
|
|
56
56
|
* Creates completion parsers based on the specified mode.
|
|
57
57
|
*/
|
|
58
|
-
function createCompletionParser(mode, programName, availableShells, name = "both") {
|
|
58
|
+
function createCompletionParser(mode, programName, availableShells, name = "both", helpVisibility = name) {
|
|
59
59
|
const shellList = [];
|
|
60
60
|
for (const shell in availableShells) {
|
|
61
61
|
if (shellList.length > 0) shellList.push(text(", "));
|
|
@@ -78,18 +78,27 @@ function createCompletionParser(mode, programName, availableShells, name = "both
|
|
|
78
78
|
`
|
|
79
79
|
};
|
|
80
80
|
const completionCommands = [];
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
const showSingular = helpVisibility === "singular" || helpVisibility === "both";
|
|
82
|
+
const showPlural = helpVisibility === "plural" || helpVisibility === "both";
|
|
83
|
+
if (name === "singular" || name === "both") completionCommands.push(command("completion", completionInner, {
|
|
84
|
+
...completionCommandConfig,
|
|
85
|
+
hidden: !showSingular
|
|
86
|
+
}));
|
|
87
|
+
if (name === "plural" || name === "both") completionCommands.push(command("completions", completionInner, {
|
|
88
|
+
...completionCommandConfig,
|
|
89
|
+
hidden: !showPlural
|
|
90
|
+
}));
|
|
83
91
|
const completionCommand = longestMatch(...completionCommands);
|
|
84
|
-
const
|
|
85
|
-
if (name === "singular" || name === "both")
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
92
|
+
const completionOptions = [];
|
|
93
|
+
if (name === "singular" || name === "both") completionOptions.push(option("--completion", string({ metavar: "SHELL" }), {
|
|
94
|
+
description: message`Generate shell completion script.`,
|
|
95
|
+
hidden: !showSingular
|
|
96
|
+
}));
|
|
97
|
+
if (name === "plural" || name === "both") completionOptions.push(option("--completions", string({ metavar: "SHELL" }), {
|
|
98
|
+
description: message`Generate shell completion script.`,
|
|
99
|
+
hidden: !showPlural
|
|
100
|
+
}));
|
|
101
|
+
const completionOption = completionOptions.length === 1 ? completionOptions[0] : longestMatch(completionOptions[0], completionOptions[1]);
|
|
93
102
|
const argsParser = withDefault(multiple(argument(string({ metavar: "ARG" }), { description: message`Command line arguments for completion suggestions (used by shell integration; you usually don't need to provide this).` })), []);
|
|
94
103
|
const optionParser = object({
|
|
95
104
|
shell: completionOption,
|
|
@@ -441,6 +450,7 @@ function runParser(parserOrProgram, programNameOrArgs, argsOrOptions, optionsPar
|
|
|
441
450
|
const onVersion = options.version?.onShow ?? (() => ({}));
|
|
442
451
|
const completionMode = options.completion?.mode ?? "both";
|
|
443
452
|
const completionName = options.completion?.name ?? "both";
|
|
453
|
+
const completionHelpVisibility = options.completion?.helpVisibility ?? completionName;
|
|
444
454
|
const onCompletion = options.completion?.onShow ?? (() => ({}));
|
|
445
455
|
const defaultShells = {
|
|
446
456
|
bash,
|
|
@@ -467,7 +477,7 @@ function runParser(parserOrProgram, programNameOrArgs, argsOrOptions, optionsPar
|
|
|
467
477
|
const completionParsers = completion === "none" ? {
|
|
468
478
|
completionCommand: null,
|
|
469
479
|
completionOption: null
|
|
470
|
-
} : createCompletionParser(completion, programName, availableShells, completionName);
|
|
480
|
+
} : createCompletionParser(completion, programName, availableShells, completionName, completionHelpVisibility);
|
|
471
481
|
if (options.completion) {
|
|
472
482
|
const hasHelpOption = args.includes("--help");
|
|
473
483
|
if ((completionMode === "command" || completionMode === "both") && args.length >= 1 && ((completionName === "singular" || completionName === "both" ? args[0] === "completion" : false) || (completionName === "plural" || completionName === "both" ? args[0] === "completions" : false)) && !hasHelpOption) return handleCompletion(args.slice(1), programName, parser, completionParsers.completionCommand, stdout, stderr, onCompletion, onError, availableShells, colors, maxWidth, completionMode, completionName);
|
package/dist/index.d.cts
CHANGED
|
@@ -11,5 +11,5 @@ import { ArgumentErrorOptions, ArgumentOptions, CommandErrorOptions, CommandOpti
|
|
|
11
11
|
import { CombineModes, DocState, InferMode, InferValue, Mode, ModeIterable, ModeValue, Parser, ParserContext, ParserResult, Result, Suggestion, getDocPage, getDocPageAsync, getDocPageSync, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync } from "./parser.cjs";
|
|
12
12
|
import { ShellCompletion, bash, fish, nu, pwsh, zsh } from "./completion.cjs";
|
|
13
13
|
import { ParserValuePlaceholder, SourceContext } from "./context.cjs";
|
|
14
|
-
import { ExtractRequiredOptions, RunOptions, RunParserError, RunWithOptions, SubstituteParserValue, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync } from "./facade.cjs";
|
|
15
|
-
export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, ConditionalErrorOptions, ConditionalOptions, DeferredParseState, DependencyError, DependencyMode, DependencyRegistry, DependencySource, DependencySourceState, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EmailOptions, ExtractRequiredOptions, FlagErrorOptions, FlagOptions, FloatOptions, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OrErrorOptions, OrOptions, type ParseOptions, Parser, ParserContext, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PendingDependencySourceState, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, ResolvedDependency, Result, RunOptions, RunParserError, RunWithOptions, ShellCompletion, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, StringOptions, SubstituteParserValue, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, annotationKey, argument, bash, choice, cidr, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractOptionNames, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDefaultValuesFunction, getDependencyIds, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isNonEmptyString, isPendingDependencySourceState, isValueParser, isWrappedDependencySource, link, locale, longestMatch, macAddress, map, merge, message, metavar, multiple, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, parseWithDependency, passThrough, pendingDependencySourceStateMarker, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, socketAddress, string, suggest, suggestAsync, suggestSync, suggestWithDependency, text, transformsDependencyValue, transformsDependencyValueMarker, tuple, url, uuid, value, valueSet, values, withDefault, wrappedDependencySourceMarker, zsh };
|
|
14
|
+
import { CompletionHelpVisibility, CompletionName, ExtractRequiredOptions, RunOptions, RunParserError, RunWithOptions, SubstituteParserValue, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync } from "./facade.cjs";
|
|
15
|
+
export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, CompletionHelpVisibility, CompletionName, ConditionalErrorOptions, ConditionalOptions, DeferredParseState, DependencyError, DependencyMode, DependencyRegistry, DependencySource, DependencySourceState, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EmailOptions, ExtractRequiredOptions, FlagErrorOptions, FlagOptions, FloatOptions, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OrErrorOptions, OrOptions, type ParseOptions, Parser, ParserContext, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PendingDependencySourceState, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, ResolvedDependency, Result, RunOptions, RunParserError, RunWithOptions, ShellCompletion, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, StringOptions, SubstituteParserValue, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, annotationKey, argument, bash, choice, cidr, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractOptionNames, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDefaultValuesFunction, getDependencyIds, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isNonEmptyString, isPendingDependencySourceState, isValueParser, isWrappedDependencySource, link, locale, longestMatch, macAddress, map, merge, message, metavar, multiple, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, parseWithDependency, passThrough, pendingDependencySourceStateMarker, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, socketAddress, string, suggest, suggestAsync, suggestSync, suggestWithDependency, text, transformsDependencyValue, transformsDependencyValueMarker, tuple, url, uuid, value, valueSet, values, withDefault, wrappedDependencySourceMarker, zsh };
|
package/dist/index.d.ts
CHANGED
|
@@ -11,5 +11,5 @@ import { ArgumentErrorOptions, ArgumentOptions, CommandErrorOptions, CommandOpti
|
|
|
11
11
|
import { CombineModes, DocState, InferMode, InferValue, Mode, ModeIterable, ModeValue, Parser, ParserContext, ParserResult, Result, Suggestion, getDocPage, getDocPageAsync, getDocPageSync, parse, parseAsync, parseSync, suggest, suggestAsync, suggestSync } from "./parser.js";
|
|
12
12
|
import { ShellCompletion, bash, fish, nu, pwsh, zsh } from "./completion.js";
|
|
13
13
|
import { ParserValuePlaceholder, SourceContext } from "./context.js";
|
|
14
|
-
import { ExtractRequiredOptions, RunOptions, RunParserError, RunWithOptions, SubstituteParserValue, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync } from "./facade.js";
|
|
15
|
-
export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, ConditionalErrorOptions, ConditionalOptions, DeferredParseState, DependencyError, DependencyMode, DependencyRegistry, DependencySource, DependencySourceState, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EmailOptions, ExtractRequiredOptions, FlagErrorOptions, FlagOptions, FloatOptions, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OrErrorOptions, OrOptions, type ParseOptions, Parser, ParserContext, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PendingDependencySourceState, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, ResolvedDependency, Result, RunOptions, RunParserError, RunWithOptions, ShellCompletion, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, StringOptions, SubstituteParserValue, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, annotationKey, argument, bash, choice, cidr, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractOptionNames, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDefaultValuesFunction, getDependencyIds, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isNonEmptyString, isPendingDependencySourceState, isValueParser, isWrappedDependencySource, link, locale, longestMatch, macAddress, map, merge, message, metavar, multiple, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, parseWithDependency, passThrough, pendingDependencySourceStateMarker, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, socketAddress, string, suggest, suggestAsync, suggestSync, suggestWithDependency, text, transformsDependencyValue, transformsDependencyValueMarker, tuple, url, uuid, value, valueSet, values, withDefault, wrappedDependencySourceMarker, zsh };
|
|
14
|
+
import { CompletionHelpVisibility, CompletionName, ExtractRequiredOptions, RunOptions, RunParserError, RunWithOptions, SubstituteParserValue, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync } from "./facade.js";
|
|
15
|
+
export { type Annotations, AnyDependencySource, ArgumentErrorOptions, ArgumentOptions, ChoiceOptions, ChoiceOptionsBase, ChoiceOptionsNumber, ChoiceOptionsString, CidrOptions, CidrValue, CombineMode, CombineModes, CombinedDependencyMode, CommandErrorOptions, CommandOptions, CompletionHelpVisibility, CompletionName, ConditionalErrorOptions, ConditionalOptions, DeferredParseState, DependencyError, DependencyMode, DependencyRegistry, DependencySource, DependencySourceState, DependencyValue, DependencyValues, DeriveAsyncOptions, DeriveFromAsyncOptions, DeriveFromOptions, DeriveFromSyncOptions, DeriveOptions, DeriveSyncOptions, DerivedValueParser, DocEntry, DocFragment, DocFragments, DocPage, DocPageFormatOptions, DocSection, DocState, DomainOptions, DuplicateOptionError, EmailOptions, ExtractRequiredOptions, FlagErrorOptions, FlagOptions, FloatOptions, HostnameOptions, InferMode, InferValue, IntegerOptionsBigInt, IntegerOptionsNumber, IpOptions, Ipv4Options, Ipv6Options, LocaleOptions, LongestMatchErrorOptions, LongestMatchOptions, MacAddressOptions, MergeOptions, type Message, type MessageFormatOptions, type MessageTerm, Mode, ModeIterable, ModeValue, MultipleErrorOptions, MultipleOptions, NoMatchContext, NonEmptyString, ObjectErrorOptions, ObjectOptions, OptionErrorOptions, OptionName, OptionOptions, OptionState, OrErrorOptions, OrOptions, type ParseOptions, Parser, ParserContext, ParserResult, ParserValuePlaceholder, PassThroughFormat, PassThroughOptions, PendingDependencySourceState, PortOptionsBigInt, PortOptionsNumber, PortRangeOptionsBigInt, PortRangeOptionsNumber, PortRangeValueBigInt, PortRangeValueNumber, ResolvedDependency, Result, RunOptions, RunParserError, RunWithOptions, ShellCompletion, ShowDefaultOptions, SocketAddressOptions, SocketAddressValue, SourceContext, StringOptions, SubstituteParserValue, Suggestion, TupleOptions, UrlOptions, Usage, UsageFormatOptions, UsageTerm, UsageTermFormatOptions, Uuid, UuidOptions, ValueParser, ValueParserResult, type ValueSetOptions, WithDefaultError, WithDefaultOptions, annotationKey, argument, bash, choice, cidr, command, commandLine, concat, conditional, constant, createDeferredParseState, createDependencySourceState, createPendingDependencySourceState, defaultValues, deferredParseMarker, dependency, dependencyId, dependencyIds, dependencySourceMarker, dependencySourceStateMarker, deriveFrom, deriveFromAsync, deriveFromSync, derivedValueParserMarker, domain, email, ensureNonEmptyString, envVar, extractArgumentMetavars, extractCommandNames, extractOptionNames, fish, flag, float, formatDependencyError, formatDocPage, formatMessage, formatUsage, formatUsageTerm, getAnnotations, getDefaultValuesFunction, getDependencyIds, getDocPage, getDocPageAsync, getDocPageSync, group, hostname, integer, ip, ipv4, ipv6, isDeferredParseState, isDependencySource, isDependencySourceState, isDerivedValueParser, isNonEmptyString, isPendingDependencySourceState, isValueParser, isWrappedDependencySource, link, locale, longestMatch, macAddress, map, merge, message, metavar, multiple, nonEmpty, normalizeUsage, nu, object, option, optionName, optionNames, optional, or, parse, parseAsync, parseSync, parseWithDependency, passThrough, pendingDependencySourceStateMarker, port, portRange, pwsh, runParser, runParserAsync, runParserSync, runWith, runWithAsync, runWithSync, socketAddress, string, suggest, suggestAsync, suggestSync, suggestWithDependency, text, transformsDependencyValue, transformsDependencyValueMarker, tuple, url, uuid, value, valueSet, values, withDefault, wrappedDependencySourceMarker, zsh };
|