padrone 1.2.0 → 1.4.0
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/CHANGELOG.md +74 -0
- package/dist/{args-CKNh7Dm9.mjs → args-CVDbyyzG.mjs} +46 -22
- package/dist/args-CVDbyyzG.mjs.map +1 -0
- package/dist/codegen/index.mjs +12 -2
- package/dist/codegen/index.mjs.map +1 -1
- package/dist/completion.d.mts +1 -1
- package/dist/completion.mjs +2 -2
- package/dist/completion.mjs.map +1 -1
- package/dist/docs/index.d.mts +1 -1
- package/dist/docs/index.mjs +15 -14
- package/dist/docs/index.mjs.map +1 -1
- package/dist/{formatter-Dvx7jFXr.d.mts → formatter-ClUK5hcQ.d.mts} +4 -2
- package/dist/formatter-ClUK5hcQ.d.mts.map +1 -0
- package/dist/{help-mUIX0T0V.mjs → help-CcBe91bV.mjs} +89 -30
- package/dist/help-CcBe91bV.mjs.map +1 -0
- package/dist/index.d.mts +2 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +50 -17
- package/dist/index.mjs.map +1 -1
- package/dist/test.d.mts +1 -1
- package/dist/{types-qrtt0135.d.mts → types-DjIdJN5G.d.mts} +27 -5
- package/dist/types-DjIdJN5G.d.mts.map +1 -0
- package/package.json +1 -1
- package/src/args.ts +124 -28
- package/src/cli/doctor.ts +28 -10
- package/src/cli/index.ts +0 -0
- package/src/codegen/generators/command-file.ts +16 -3
- package/src/command-utils.ts +33 -2
- package/src/completion.ts +1 -1
- package/src/create.ts +22 -12
- package/src/docs/index.ts +16 -16
- package/src/formatter.ts +65 -27
- package/src/help.ts +10 -4
- package/src/parse.ts +22 -6
- package/src/type-utils.ts +2 -2
- package/dist/args-CKNh7Dm9.mjs.map +0 -1
- package/dist/formatter-Dvx7jFXr.d.mts.map +0 -1
- package/dist/help-mUIX0T0V.mjs.map +0 -1
- package/dist/types-qrtt0135.d.mts.map +0 -1
package/dist/test.d.mts
CHANGED
|
@@ -1,16 +1,22 @@
|
|
|
1
|
-
import { n as HelpFormat, t as HelpDetail } from "./formatter-
|
|
1
|
+
import { n as HelpFormat, t as HelpDetail } from "./formatter-ClUK5hcQ.mjs";
|
|
2
2
|
import { StandardJSONSchemaV1, StandardSchemaV1 } from "@standard-schema/spec";
|
|
3
3
|
import { Tool } from "ai";
|
|
4
4
|
|
|
5
5
|
//#region src/args.d.ts
|
|
6
|
+
type Letter = 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z';
|
|
7
|
+
/** A single letter character, valid as a short CLI flag (e.g. `'v'`, `'n'`, `'V'`). */
|
|
8
|
+
type SingleChar = Letter | Uppercase<Letter>;
|
|
6
9
|
interface PadroneFieldMeta {
|
|
7
10
|
description?: string;
|
|
11
|
+
/** Single-character short flags (stackable: `-abc` = `-a -b -c`). Used with single dash. */
|
|
12
|
+
flags?: SingleChar[] | SingleChar;
|
|
13
|
+
/** Multi-character alternative long names. Used with double dash (e.g. `--dry-run` for `--dryRun`). */
|
|
8
14
|
alias?: string[] | string;
|
|
9
15
|
deprecated?: boolean | string;
|
|
10
16
|
hidden?: boolean;
|
|
11
17
|
examples?: unknown[];
|
|
12
18
|
}
|
|
13
|
-
type PositionalArgs<TObj> = TObj extends Record<string, any> ? { [K in keyof TObj]: TObj[K] extends Array<any> ? `...${K & string}` : K & string }[keyof TObj] : string;
|
|
19
|
+
type PositionalArgs<TObj> = TObj extends Record<string, any> ? { [K in keyof TObj]: NonNullable<TObj[K]> extends Array<any> ? `...${K & string}` | (K & string) : K & string }[keyof TObj] : string;
|
|
14
20
|
/**
|
|
15
21
|
* Meta configuration for arguments, including positional arguments.
|
|
16
22
|
* The `positional` array defines which arguments are positional and their order.
|
|
@@ -46,6 +52,22 @@ interface PadroneArgsSchemaMeta<TObj = Record<string, any>> {
|
|
|
46
52
|
* Per-argument metadata.
|
|
47
53
|
*/
|
|
48
54
|
fields?: { [K in keyof TObj]?: PadroneFieldMeta };
|
|
55
|
+
/**
|
|
56
|
+
* Automatically generate kebab-case aliases for camelCase option names.
|
|
57
|
+
* For example, `dryRun` automatically gets `--dry-run` as an alias.
|
|
58
|
+
* Defaults to `true`. Set to `false` to disable.
|
|
59
|
+
*
|
|
60
|
+
* @default true
|
|
61
|
+
* @example
|
|
62
|
+
* ```ts
|
|
63
|
+
* // Auto-aliases enabled (default): --dry-run → dryRun
|
|
64
|
+
* .arguments(z.object({ dryRun: z.boolean() }))
|
|
65
|
+
*
|
|
66
|
+
* // Disable auto-aliases
|
|
67
|
+
* .arguments(z.object({ dryRun: z.boolean() }), { autoAlias: false })
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
autoAlias?: boolean;
|
|
49
71
|
/**
|
|
50
72
|
* Read from stdin and inject the data into the specified argument field.
|
|
51
73
|
* Only reads when stdin is piped (not a TTY) and the field wasn't already provided via CLI flags.
|
|
@@ -240,11 +262,11 @@ type OrAsyncMeta<TExisting extends boolean, TMeta> = TExisting extends true ? tr
|
|
|
240
262
|
/**
|
|
241
263
|
* Conditionally wraps a type in Promise based on the TAsync flag.
|
|
242
264
|
* - `true` → `Promise<T>`
|
|
243
|
-
* - `false` → `T`
|
|
265
|
+
* - `false` → `T & PromiseLike<T>` (thenable: supports `.then()` and `await`)
|
|
244
266
|
* - `boolean` (union of true|false) → `Promise<T>` (safe default when async-ness is uncertain)
|
|
245
267
|
* - `any` → `T` (for generic/any typed commands like AnyPadroneCommand)
|
|
246
268
|
*/
|
|
247
|
-
type MaybePromise<T, TAsync> = IsAny<TAsync> extends true ? T : true extends TAsync ? Promise<T> : T
|
|
269
|
+
type MaybePromise<T, TAsync> = IsAny<TAsync> extends true ? T : true extends TAsync ? Promise<T> : T & PromiseLike<T>;
|
|
248
270
|
type SplitString<TName extends string, TSplitBy extends string = ' '> = TName extends `${infer FirstPart}${TSplitBy}${infer RestParts}` ? [FirstPart, ...SplitString<RestParts, TSplitBy>] : [TName];
|
|
249
271
|
type JoinString<TParts extends string[], TJoinBy extends string = ' '> = TParts extends [infer FirstPart extends string, ...infer RestParts extends string[]] ? RestParts extends [] ? FirstPart : `${FirstPart}${TJoinBy}${JoinString<RestParts, TJoinBy>}` : TParts extends [] ? '' : TParts[number];
|
|
250
272
|
type SplitLastSpace<S extends string> = SplitString<S> extends [...infer Init extends string[], infer Last extends string] ? Init extends [] ? [S, never] : [JoinString<Init>, Last] : [S, never];
|
|
@@ -1034,4 +1056,4 @@ type PadronePlugin = {
|
|
|
1034
1056
|
};
|
|
1035
1057
|
//#endregion
|
|
1036
1058
|
export { PossibleCommands as _, PadroneActionContext as a, PadroneRuntime as b, PadroneCommandResult as c, PadroneProgram as d, PadroneSchema as f, PickCommandByName as g, UpdateCheckConfig as h, AsyncPadroneSchema as i, PadroneParseResult as l, WrapResult as m, AnyPadroneCommand as n, PadroneBuilder as o, WrapConfig as p, AnyPadroneProgram as r, PadroneCommand as s, AnyPadroneBuilder as t, PadronePlugin as u, InteractiveMode as v, REPL_SIGINT as x, InteractivePromptConfig as y };
|
|
1037
|
-
//# sourceMappingURL=types-
|
|
1059
|
+
//# sourceMappingURL=types-DjIdJN5G.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-DjIdJN5G.d.mts","names":[],"sources":["../src/args.ts","../src/help.ts","../src/runtime.ts","../src/type-utils.ts","../src/update-check.ts","../src/wrap.ts","../src/types.ts"],"mappings":"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"}
|
package/package.json
CHANGED
package/src/args.ts
CHANGED
|
@@ -1,7 +1,41 @@
|
|
|
1
1
|
import type { StandardJSONSchemaV1 } from '@standard-schema/spec';
|
|
2
2
|
|
|
3
|
+
type Letter =
|
|
4
|
+
| 'a'
|
|
5
|
+
| 'b'
|
|
6
|
+
| 'c'
|
|
7
|
+
| 'd'
|
|
8
|
+
| 'e'
|
|
9
|
+
| 'f'
|
|
10
|
+
| 'g'
|
|
11
|
+
| 'h'
|
|
12
|
+
| 'i'
|
|
13
|
+
| 'j'
|
|
14
|
+
| 'k'
|
|
15
|
+
| 'l'
|
|
16
|
+
| 'm'
|
|
17
|
+
| 'n'
|
|
18
|
+
| 'o'
|
|
19
|
+
| 'p'
|
|
20
|
+
| 'q'
|
|
21
|
+
| 'r'
|
|
22
|
+
| 's'
|
|
23
|
+
| 't'
|
|
24
|
+
| 'u'
|
|
25
|
+
| 'v'
|
|
26
|
+
| 'w'
|
|
27
|
+
| 'x'
|
|
28
|
+
| 'y'
|
|
29
|
+
| 'z';
|
|
30
|
+
|
|
31
|
+
/** A single letter character, valid as a short CLI flag (e.g. `'v'`, `'n'`, `'V'`). */
|
|
32
|
+
export type SingleChar = Letter | Uppercase<Letter>;
|
|
33
|
+
|
|
3
34
|
export interface PadroneFieldMeta {
|
|
4
35
|
description?: string;
|
|
36
|
+
/** Single-character short flags (stackable: `-abc` = `-a -b -c`). Used with single dash. */
|
|
37
|
+
flags?: SingleChar[] | SingleChar;
|
|
38
|
+
/** Multi-character alternative long names. Used with double dash (e.g. `--dry-run` for `--dryRun`). */
|
|
5
39
|
alias?: string[] | string;
|
|
6
40
|
deprecated?: boolean | string;
|
|
7
41
|
hidden?: boolean;
|
|
@@ -11,7 +45,7 @@ export interface PadroneFieldMeta {
|
|
|
11
45
|
type PositionalArgs<TObj> =
|
|
12
46
|
TObj extends Record<string, any>
|
|
13
47
|
? {
|
|
14
|
-
[K in keyof TObj]: TObj[K] extends Array<any> ? `...${K & string}` : K & string;
|
|
48
|
+
[K in keyof TObj]: NonNullable<TObj[K]> extends Array<any> ? `...${K & string}` | (K & string) : K & string;
|
|
15
49
|
}[keyof TObj]
|
|
16
50
|
: string;
|
|
17
51
|
|
|
@@ -54,6 +88,22 @@ export interface PadroneArgsSchemaMeta<TObj = Record<string, any>> {
|
|
|
54
88
|
* Per-argument metadata.
|
|
55
89
|
*/
|
|
56
90
|
fields?: { [K in keyof TObj]?: PadroneFieldMeta };
|
|
91
|
+
/**
|
|
92
|
+
* Automatically generate kebab-case aliases for camelCase option names.
|
|
93
|
+
* For example, `dryRun` automatically gets `--dry-run` as an alias.
|
|
94
|
+
* Defaults to `true`. Set to `false` to disable.
|
|
95
|
+
*
|
|
96
|
+
* @default true
|
|
97
|
+
* @example
|
|
98
|
+
* ```ts
|
|
99
|
+
* // Auto-aliases enabled (default): --dry-run → dryRun
|
|
100
|
+
* .arguments(z.object({ dryRun: z.boolean() }))
|
|
101
|
+
*
|
|
102
|
+
* // Disable auto-aliases
|
|
103
|
+
* .arguments(z.object({ dryRun: z.boolean() }), { autoAlias: false })
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
autoAlias?: boolean;
|
|
57
107
|
/**
|
|
58
108
|
* Read from stdin and inject the data into the specified argument field.
|
|
59
109
|
* Only reads when stdin is piped (not a TTY) and the field wasn't already provided via CLI flags.
|
|
@@ -110,6 +160,15 @@ export interface PadroneArgsSchemaMeta<TObj = Record<string, any>> {
|
|
|
110
160
|
optionalInteractive?: true | (keyof TObj & string)[];
|
|
111
161
|
}
|
|
112
162
|
|
|
163
|
+
/**
|
|
164
|
+
* Convert a camelCase string to kebab-case.
|
|
165
|
+
* Returns null if the string has no uppercase letters (no conversion needed).
|
|
166
|
+
*/
|
|
167
|
+
export function camelToKebab(str: string): string | null {
|
|
168
|
+
if (!/[A-Z]/.test(str)) return null;
|
|
169
|
+
return str.replace(/[A-Z]/g, (ch) => `-${ch.toLowerCase()}`);
|
|
170
|
+
}
|
|
171
|
+
|
|
113
172
|
/**
|
|
114
173
|
* Normalizes stdin config into its explicit form.
|
|
115
174
|
*/
|
|
@@ -133,17 +192,32 @@ export function parsePositionalConfig(positional: string[]): { name: string; var
|
|
|
133
192
|
* Result type for extractSchemaMetadata function.
|
|
134
193
|
*/
|
|
135
194
|
interface SchemaMetadataResult {
|
|
195
|
+
/** Single-char flags: maps flag char → full arg name (e.g. `{ v: 'verbose' }`) */
|
|
196
|
+
flags: Record<string, string>;
|
|
197
|
+
/** Multi-char aliases: maps alias → full arg name (e.g. `{ 'dry-run': 'dryRun' }`) */
|
|
136
198
|
aliases: Record<string, string>;
|
|
137
199
|
}
|
|
138
200
|
|
|
201
|
+
function addEntries(target: Record<string, string>, key: string, items: string | string[], filter?: (item: string) => boolean) {
|
|
202
|
+
const list = typeof items === 'string' ? [items] : items;
|
|
203
|
+
for (const item of list) {
|
|
204
|
+
if (typeof item === 'string' && item && item !== key && !(item in target) && (!filter || filter(item))) {
|
|
205
|
+
target[item] = key;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
139
210
|
/**
|
|
140
211
|
* Extract all arg metadata from schema and meta in a single pass.
|
|
141
|
-
*
|
|
212
|
+
* Returns flags (single-char, stackable) and aliases (multi-char, long names) separately.
|
|
213
|
+
* When `autoAlias` is true (default), camelCase property names automatically get kebab-case aliases.
|
|
142
214
|
*/
|
|
143
215
|
export function extractSchemaMetadata(
|
|
144
216
|
schema: StandardJSONSchemaV1,
|
|
145
217
|
meta?: Record<string, PadroneFieldMeta | undefined>,
|
|
218
|
+
autoAlias?: boolean,
|
|
146
219
|
): SchemaMetadataResult {
|
|
220
|
+
const flags: Record<string, string> = {};
|
|
147
221
|
const aliases: Record<string, string> = {};
|
|
148
222
|
|
|
149
223
|
// Extract from meta object
|
|
@@ -151,14 +225,11 @@ export function extractSchemaMetadata(
|
|
|
151
225
|
for (const [key, value] of Object.entries(meta)) {
|
|
152
226
|
if (!value) continue;
|
|
153
227
|
|
|
154
|
-
|
|
228
|
+
if (value.flags) {
|
|
229
|
+
addEntries(flags, key, value.flags, (item) => item.length === 1);
|
|
230
|
+
}
|
|
155
231
|
if (value.alias) {
|
|
156
|
-
|
|
157
|
-
for (const aliasKey of list) {
|
|
158
|
-
if (typeof aliasKey === 'string' && aliasKey && aliasKey !== key) {
|
|
159
|
-
aliases[aliasKey] = key;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
232
|
+
addEntries(aliases, key, value.alias, (item) => item.length > 1);
|
|
162
233
|
}
|
|
163
234
|
}
|
|
164
235
|
}
|
|
@@ -170,16 +241,26 @@ export function extractSchemaMetadata(
|
|
|
170
241
|
for (const [propertyName, propertySchema] of Object.entries(jsonSchema.properties as Record<string, any>)) {
|
|
171
242
|
if (!propertySchema) continue;
|
|
172
243
|
|
|
173
|
-
// Extract
|
|
244
|
+
// Extract flags from schema `.meta({ flags: ... })`
|
|
245
|
+
const propFlags = propertySchema.flags;
|
|
246
|
+
if (propFlags) {
|
|
247
|
+
addEntries(flags, propertyName, propFlags, (item) => item.length === 1);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
// Extract aliases from schema `.meta({ alias: ... })`
|
|
174
251
|
const propAlias = propertySchema.alias;
|
|
175
252
|
if (propAlias) {
|
|
176
253
|
const list = typeof propAlias === 'string' ? [propAlias] : propAlias;
|
|
177
254
|
if (Array.isArray(list)) {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
255
|
+
addEntries(aliases, propertyName, list, (item) => item.length > 1);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
// Auto-generate kebab-case alias for camelCase property names
|
|
260
|
+
if (autoAlias !== false) {
|
|
261
|
+
const kebab = camelToKebab(propertyName);
|
|
262
|
+
if (kebab && !(kebab in aliases)) {
|
|
263
|
+
aliases[kebab] = propertyName;
|
|
183
264
|
}
|
|
184
265
|
}
|
|
185
266
|
}
|
|
@@ -188,18 +269,18 @@ export function extractSchemaMetadata(
|
|
|
188
269
|
// Ignore errors from JSON schema generation
|
|
189
270
|
}
|
|
190
271
|
|
|
191
|
-
return { aliases };
|
|
272
|
+
return { flags, aliases };
|
|
192
273
|
}
|
|
193
274
|
|
|
194
|
-
function
|
|
275
|
+
function preprocessMappings(data: Record<string, unknown>, mappings: Record<string, string>): Record<string, unknown> {
|
|
195
276
|
const result = { ...data };
|
|
196
277
|
|
|
197
|
-
for (const [
|
|
198
|
-
if (
|
|
199
|
-
const
|
|
278
|
+
for (const [mappedKey, fullArgName] of Object.entries(mappings)) {
|
|
279
|
+
if (mappedKey in data && mappedKey !== fullArgName) {
|
|
280
|
+
const mappedValue = data[mappedKey];
|
|
200
281
|
// Prefer full arg name if it exists
|
|
201
|
-
if (!(fullArgName in result)) result[fullArgName] =
|
|
202
|
-
delete result[
|
|
282
|
+
if (!(fullArgName in result)) result[fullArgName] = mappedValue;
|
|
283
|
+
delete result[mappedKey];
|
|
203
284
|
}
|
|
204
285
|
}
|
|
205
286
|
|
|
@@ -207,6 +288,7 @@ function preprocessAliases(data: Record<string, unknown>, aliases: Record<string
|
|
|
207
288
|
}
|
|
208
289
|
|
|
209
290
|
interface ParseArgsContext {
|
|
291
|
+
flags?: Record<string, string>;
|
|
210
292
|
aliases?: Record<string, string>;
|
|
211
293
|
stdinData?: Record<string, unknown>;
|
|
212
294
|
envData?: Record<string, unknown>;
|
|
@@ -238,9 +320,12 @@ function applyValues(data: Record<string, unknown>, values: Record<string, unkno
|
|
|
238
320
|
export function preprocessArgs(data: Record<string, unknown>, ctx: ParseArgsContext): Record<string, unknown> {
|
|
239
321
|
let result = { ...data };
|
|
240
322
|
|
|
241
|
-
// 1. Apply aliases first
|
|
323
|
+
// 1. Apply flags and aliases first
|
|
324
|
+
if (ctx.flags && Object.keys(ctx.flags).length > 0) {
|
|
325
|
+
result = preprocessMappings(result, ctx.flags);
|
|
326
|
+
}
|
|
242
327
|
if (ctx.aliases && Object.keys(ctx.aliases).length > 0) {
|
|
243
|
-
result =
|
|
328
|
+
result = preprocessMappings(result, ctx.aliases);
|
|
244
329
|
}
|
|
245
330
|
|
|
246
331
|
// 2. Apply stdin data (higher precedence than env)
|
|
@@ -297,10 +382,12 @@ export function coerceArgs(data: Record<string, unknown>, schema: StandardJSONSc
|
|
|
297
382
|
if (value === 'true' || value === '1') result[key] = true;
|
|
298
383
|
else if (value === 'false' || value === '0') result[key] = false;
|
|
299
384
|
}
|
|
300
|
-
} else if (targetType === 'array'
|
|
385
|
+
} else if (targetType === 'array') {
|
|
386
|
+
// Coerce single items to array
|
|
387
|
+
const arr = Array.isArray(value) ? value : [value];
|
|
301
388
|
const itemType = prop.items?.type as string | undefined;
|
|
302
389
|
if (itemType === 'number' || itemType === 'integer') {
|
|
303
|
-
result[key] =
|
|
390
|
+
result[key] = arr.map((v) => {
|
|
304
391
|
if (typeof v === 'string') {
|
|
305
392
|
const num = Number(v);
|
|
306
393
|
return Number.isNaN(num) ? v : num;
|
|
@@ -308,13 +395,15 @@ export function coerceArgs(data: Record<string, unknown>, schema: StandardJSONSc
|
|
|
308
395
|
return v;
|
|
309
396
|
});
|
|
310
397
|
} else if (itemType === 'boolean') {
|
|
311
|
-
result[key] =
|
|
398
|
+
result[key] = arr.map((v) => {
|
|
312
399
|
if (typeof v === 'string') {
|
|
313
400
|
if (v === 'true' || v === '1') return true;
|
|
314
401
|
if (v === 'false' || v === '0') return false;
|
|
315
402
|
}
|
|
316
403
|
return v;
|
|
317
404
|
});
|
|
405
|
+
} else if (!Array.isArray(value)) {
|
|
406
|
+
result[key] = arr;
|
|
318
407
|
}
|
|
319
408
|
}
|
|
320
409
|
}
|
|
@@ -333,6 +422,7 @@ const frameworkReservedKeys = new Set(['config', 'c']);
|
|
|
333
422
|
export function detectUnknownArgs(
|
|
334
423
|
data: Record<string, unknown>,
|
|
335
424
|
schema: StandardJSONSchemaV1,
|
|
425
|
+
flags: Record<string, string>,
|
|
336
426
|
aliases: Record<string, string>,
|
|
337
427
|
suggestFn: (input: string, candidates: string[]) => string,
|
|
338
428
|
): { key: string; suggestion: string }[] {
|
|
@@ -350,7 +440,13 @@ export function detectUnknownArgs(
|
|
|
350
440
|
|
|
351
441
|
if (isLoose) return [];
|
|
352
442
|
|
|
353
|
-
const knownKeys = new Set<string>([
|
|
443
|
+
const knownKeys = new Set<string>([
|
|
444
|
+
...Object.keys(properties),
|
|
445
|
+
...Object.keys(flags),
|
|
446
|
+
...Object.values(flags),
|
|
447
|
+
...Object.keys(aliases),
|
|
448
|
+
...Object.values(aliases),
|
|
449
|
+
]);
|
|
354
450
|
const propertyNames = Object.keys(properties);
|
|
355
451
|
const unknowns: { key: string; suggestion: string }[] = [];
|
|
356
452
|
|
package/src/cli/doctor.ts
CHANGED
|
@@ -160,18 +160,36 @@ function checkShadowedOptionNames(commands: AnyPadroneCommand[], diagnostics: Di
|
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
162
|
|
|
163
|
-
// Also check field aliases from meta
|
|
163
|
+
// Also check field flags and aliases from meta
|
|
164
164
|
if (cmd.meta?.fields) {
|
|
165
165
|
for (const [fieldName, fieldMeta] of Object.entries(cmd.meta.fields)) {
|
|
166
|
-
if (!fieldMeta
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
166
|
+
if (!fieldMeta) continue;
|
|
167
|
+
|
|
168
|
+
// Check flags (single-char)
|
|
169
|
+
if (fieldMeta.flags) {
|
|
170
|
+
const flagList = typeof fieldMeta.flags === 'string' ? [fieldMeta.flags] : fieldMeta.flags;
|
|
171
|
+
for (const flag of flagList) {
|
|
172
|
+
if (builtins.has(flag)) {
|
|
173
|
+
diagnostics.push({
|
|
174
|
+
severity: 'warning',
|
|
175
|
+
command: commandDisplayName(cmd),
|
|
176
|
+
message: `Flag "${flag}" on field "${fieldName}" shadows the built-in --${flag} flag.`,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// Check aliases (multi-char)
|
|
183
|
+
if (fieldMeta.alias) {
|
|
184
|
+
const aliasList = typeof fieldMeta.alias === 'string' ? [fieldMeta.alias] : fieldMeta.alias;
|
|
185
|
+
for (const alias of aliasList) {
|
|
186
|
+
if (builtins.has(alias)) {
|
|
187
|
+
diagnostics.push({
|
|
188
|
+
severity: 'warning',
|
|
189
|
+
command: commandDisplayName(cmd),
|
|
190
|
+
message: `Alias "${alias}" on field "${fieldName}" shadows the built-in --${alias} flag.`,
|
|
191
|
+
});
|
|
192
|
+
}
|
|
175
193
|
}
|
|
176
194
|
}
|
|
177
195
|
}
|
package/src/cli/index.ts
CHANGED
|
File without changes
|
|
@@ -173,10 +173,23 @@ function buildFieldsMap(fields: FieldMeta[]): string | null {
|
|
|
173
173
|
const entries: string[] = [];
|
|
174
174
|
for (const field of fields) {
|
|
175
175
|
if (field.aliases && field.aliases.length > 0) {
|
|
176
|
-
|
|
177
|
-
|
|
176
|
+
// Split into flags (single-char) and aliases (multi-char)
|
|
177
|
+
const singleChar = field.aliases.filter((a) => a.replace(/^-+/, '').length === 1).map((a) => a.replace(/^-+/, ''));
|
|
178
|
+
const multiChar = field.aliases.filter((a) => a.replace(/^-+/, '').length > 1).map((a) => a.replace(/^-+/, ''));
|
|
179
|
+
|
|
178
180
|
const key = /^[a-zA-Z_$][\w$]*$/.test(field.name) ? field.name : JSON.stringify(field.name);
|
|
179
|
-
|
|
181
|
+
const parts: string[] = [];
|
|
182
|
+
if (singleChar.length > 0) {
|
|
183
|
+
const flags = singleChar.length === 1 ? JSON.stringify(singleChar[0]) : `[${singleChar.map((a) => JSON.stringify(a)).join(', ')}]`;
|
|
184
|
+
parts.push(`flags: ${flags}`);
|
|
185
|
+
}
|
|
186
|
+
if (multiChar.length > 0) {
|
|
187
|
+
const alias = multiChar.length === 1 ? JSON.stringify(multiChar[0]) : `[${multiChar.map((a) => JSON.stringify(a)).join(', ')}]`;
|
|
188
|
+
parts.push(`alias: ${alias}`);
|
|
189
|
+
}
|
|
190
|
+
if (parts.length > 0) {
|
|
191
|
+
entries.push(`${key}: { ${parts.join(', ')} }`);
|
|
192
|
+
}
|
|
180
193
|
}
|
|
181
194
|
}
|
|
182
195
|
if (entries.length === 0) return null;
|
package/src/command-utils.ts
CHANGED
|
@@ -103,6 +103,34 @@ export function thenMaybe<T, U>(value: T | Promise<T>, fn: (v: T) => U | Promise
|
|
|
103
103
|
return fn(value);
|
|
104
104
|
}
|
|
105
105
|
|
|
106
|
+
/**
|
|
107
|
+
* Makes a sync result object thenable by adding a `.then()` method.
|
|
108
|
+
* If the value is already a Promise, returns it as-is.
|
|
109
|
+
* This allows users to write `await program.cli()` or `program.cli().then(...)` regardless of sync/async.
|
|
110
|
+
*
|
|
111
|
+
* The `.then()` resolves with a plain copy (without `.then`) to avoid infinite
|
|
112
|
+
* recursive unwrapping by the Promise resolution algorithm.
|
|
113
|
+
*/
|
|
114
|
+
export function makeThenable<T>(value: T | Promise<T>): T & PromiseLike<T> {
|
|
115
|
+
if (value instanceof Promise) return value as any;
|
|
116
|
+
if (value !== null && typeof value === 'object' && !('then' in value)) {
|
|
117
|
+
// biome-ignore lint/suspicious/noThenProperty: intentional thenable shim for sync results
|
|
118
|
+
(value as any).then = (onfulfilled?: (v: T) => any, onrejected?: (reason: any) => any) => {
|
|
119
|
+
try {
|
|
120
|
+
// Resolve with a plain copy to prevent infinite thenable unwrapping
|
|
121
|
+
const plain = { ...value } as any;
|
|
122
|
+
delete plain.then;
|
|
123
|
+
const result = onfulfilled ? onfulfilled(plain) : plain;
|
|
124
|
+
return Promise.resolve(result);
|
|
125
|
+
} catch (err) {
|
|
126
|
+
if (onrejected) return Promise.resolve(onrejected(err));
|
|
127
|
+
return Promise.reject(err);
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
return value as any;
|
|
132
|
+
}
|
|
133
|
+
|
|
106
134
|
export function isIterator(value: unknown): value is Iterator<unknown> {
|
|
107
135
|
return typeof value === 'object' && value !== null && Symbol.iterator in value && typeof (value as any)[Symbol.iterator] === 'function';
|
|
108
136
|
}
|
|
@@ -364,14 +392,17 @@ export function buildReplCompleter(
|
|
|
364
392
|
if (targetCommand.argsSchema) {
|
|
365
393
|
try {
|
|
366
394
|
const argsMeta = targetCommand.meta?.fields;
|
|
367
|
-
const { aliases } = extractSchemaMetadata(targetCommand.argsSchema, argsMeta);
|
|
395
|
+
const { flags, aliases } = extractSchemaMetadata(targetCommand.argsSchema, argsMeta, targetCommand.meta?.autoAlias);
|
|
368
396
|
const jsonSchema = targetCommand.argsSchema['~standard'].jsonSchema.input({ target: 'draft-2020-12' }) as Record<string, any>;
|
|
369
397
|
if (jsonSchema.type === 'object' && jsonSchema.properties) {
|
|
370
398
|
for (const key of Object.keys(jsonSchema.properties)) {
|
|
371
399
|
options.push(`--${key}`);
|
|
372
400
|
}
|
|
401
|
+
for (const flag of Object.keys(flags)) {
|
|
402
|
+
options.push(`-${flag}`);
|
|
403
|
+
}
|
|
373
404
|
for (const alias of Object.keys(aliases)) {
|
|
374
|
-
options.push(
|
|
405
|
+
options.push(`--${alias}`);
|
|
375
406
|
}
|
|
376
407
|
}
|
|
377
408
|
} catch {
|
package/src/completion.ts
CHANGED
|
@@ -32,7 +32,7 @@ function extractArguments(cmd: AnyPadroneCommand): { name: string; alias?: strin
|
|
|
32
32
|
|
|
33
33
|
try {
|
|
34
34
|
const argsMeta = cmd.meta?.fields;
|
|
35
|
-
const { aliases } = extractSchemaMetadata(cmd.argsSchema, argsMeta);
|
|
35
|
+
const { aliases } = extractSchemaMetadata(cmd.argsSchema, argsMeta, cmd.meta?.autoAlias);
|
|
36
36
|
|
|
37
37
|
// Reverse aliases map (alias -> arg name)
|
|
38
38
|
const aliasToArgument: Record<string, string> = {};
|
package/src/create.ts
CHANGED
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
getCommandRuntime,
|
|
8
8
|
hasInteractiveConfig,
|
|
9
9
|
isAsyncBranded,
|
|
10
|
+
makeThenable,
|
|
10
11
|
mergeCommands,
|
|
11
12
|
noop,
|
|
12
13
|
outputValue,
|
|
@@ -126,8 +127,10 @@ export function createPadroneBuilder<TBuilder extends PadroneProgram = PadronePr
|
|
|
126
127
|
|
|
127
128
|
// Extract argument metadata from the nested arguments object in meta
|
|
128
129
|
const argsMeta = curCommand.meta?.fields;
|
|
129
|
-
const schemaMetadata = curCommand.argsSchema
|
|
130
|
-
|
|
130
|
+
const schemaMetadata = curCommand.argsSchema
|
|
131
|
+
? extractSchemaMetadata(curCommand.argsSchema, argsMeta, curCommand.meta?.autoAlias)
|
|
132
|
+
: { flags: {}, aliases: {} };
|
|
133
|
+
const { flags, aliases } = schemaMetadata;
|
|
131
134
|
|
|
132
135
|
// Get array arguments from schema (arrays are always variadic)
|
|
133
136
|
const arrayArguments = new Set<string>();
|
|
@@ -148,9 +151,15 @@ export function createPadroneBuilder<TBuilder extends PadroneProgram = PadronePr
|
|
|
148
151
|
const rawArgs: Record<string, unknown> = {};
|
|
149
152
|
|
|
150
153
|
for (const arg of argParts) {
|
|
151
|
-
//
|
|
152
|
-
|
|
153
|
-
|
|
154
|
+
// Resolve flags (single-char, from alias parts: -v) and aliases (multi-char, from named parts: --dry-run)
|
|
155
|
+
let key: string[];
|
|
156
|
+
if (arg.type === 'alias' && arg.key.length === 1 && flags[arg.key[0]!]) {
|
|
157
|
+
key = [flags[arg.key[0]!]!];
|
|
158
|
+
} else if (arg.type === 'named' && arg.key.length === 1 && aliases[arg.key[0]!]) {
|
|
159
|
+
key = [aliases[arg.key[0]!]!];
|
|
160
|
+
} else {
|
|
161
|
+
key = arg.key;
|
|
162
|
+
}
|
|
154
163
|
|
|
155
164
|
const rootKey = key[0]!;
|
|
156
165
|
|
|
@@ -202,7 +211,8 @@ export function createPadroneBuilder<TBuilder extends PadroneProgram = PadronePr
|
|
|
202
211
|
): Record<string, unknown> => {
|
|
203
212
|
// Apply preprocessing (stdin, env, and config bindings)
|
|
204
213
|
let preprocessedArgs = preprocessArgs(rawArgs, {
|
|
205
|
-
|
|
214
|
+
flags: {}, // Already resolved in parseCommand
|
|
215
|
+
aliases: {}, // Already resolved in parseCommand
|
|
206
216
|
stdinData: context?.stdinData,
|
|
207
217
|
envData: context?.envData,
|
|
208
218
|
configData: context?.configData,
|
|
@@ -255,9 +265,9 @@ export function createPadroneBuilder<TBuilder extends PadroneProgram = PadronePr
|
|
|
255
265
|
if (!command.argsSchema) return [];
|
|
256
266
|
|
|
257
267
|
const argsMeta = command.meta?.fields;
|
|
258
|
-
const { aliases } = extractSchemaMetadata(command.argsSchema, argsMeta);
|
|
268
|
+
const { flags, aliases } = extractSchemaMetadata(command.argsSchema, argsMeta, command.meta?.autoAlias);
|
|
259
269
|
|
|
260
|
-
return detectUnknownArgs(preprocessedArgs, command.argsSchema, aliases, suggestSimilar);
|
|
270
|
+
return detectUnknownArgs(preprocessedArgs, command.argsSchema, flags, aliases, suggestSimilar);
|
|
261
271
|
};
|
|
262
272
|
|
|
263
273
|
/**
|
|
@@ -408,7 +418,7 @@ export function createPadroneBuilder<TBuilder extends PadroneProgram = PadronePr
|
|
|
408
418
|
);
|
|
409
419
|
};
|
|
410
420
|
|
|
411
|
-
return thenMaybe(parsedOrPromise, continueAfterParse) as any;
|
|
421
|
+
return makeThenable(thenMaybe(parsedOrPromise, continueAfterParse)) as any;
|
|
412
422
|
};
|
|
413
423
|
|
|
414
424
|
const stringify: AnyPadroneProgram['stringify'] = (command = '' as any, args) => {
|
|
@@ -1128,7 +1138,7 @@ export function createPadroneBuilder<TBuilder extends PadroneProgram = PadronePr
|
|
|
1128
1138
|
});
|
|
1129
1139
|
};
|
|
1130
1140
|
|
|
1131
|
-
return warnIfUnexpectedAsync(
|
|
1141
|
+
return thenMaybe(warnIfUnexpectedAsync(validatedOrPromise, command), continueAfterValidate) as any;
|
|
1132
1142
|
};
|
|
1133
1143
|
|
|
1134
1144
|
return thenMaybe(parsedOrPromise, continueAfterParse) as any;
|
|
@@ -1143,7 +1153,7 @@ export function createPadroneBuilder<TBuilder extends PadroneProgram = PadronePr
|
|
|
1143
1153
|
};
|
|
1144
1154
|
|
|
1145
1155
|
const evalCommand: AnyPadroneProgram['eval'] = (input, evalOptions) => {
|
|
1146
|
-
return execCommand(input as string, evalOptions, 'soft');
|
|
1156
|
+
return makeThenable(execCommand(input as string, evalOptions, 'soft'));
|
|
1147
1157
|
};
|
|
1148
1158
|
|
|
1149
1159
|
/**
|
|
@@ -1229,7 +1239,7 @@ export function createPadroneBuilder<TBuilder extends PadroneProgram = PadronePr
|
|
|
1229
1239
|
updateCheckPromise.then((show) => show?.());
|
|
1230
1240
|
}
|
|
1231
1241
|
|
|
1232
|
-
return result;
|
|
1242
|
+
return makeThenable(result);
|
|
1233
1243
|
};
|
|
1234
1244
|
|
|
1235
1245
|
const run: AnyPadroneProgram['run'] = (command, args) => {
|