padrone 1.5.0 → 1.6.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 +36 -0
- package/README.md +15 -11
- package/dist/{args-D5PNDyNu.mjs → args-Cnq0nwSM.mjs} +91 -41
- package/dist/args-Cnq0nwSM.mjs.map +1 -0
- package/dist/codegen/index.mjs +4 -4
- package/dist/codegen/index.mjs.map +1 -1
- package/dist/commands-B_gufyR9.mjs +514 -0
- package/dist/commands-B_gufyR9.mjs.map +1 -0
- package/dist/{completion.mjs → completion-BEuflbDO.mjs} +12 -82
- package/dist/completion-BEuflbDO.mjs.map +1 -0
- package/dist/docs/index.d.mts +4 -4
- package/dist/docs/index.d.mts.map +1 -1
- package/dist/docs/index.mjs +10 -12
- package/dist/docs/index.mjs.map +1 -1
- package/dist/{errors-BiVrBgi6.mjs → errors-CL63UOzt.mjs} +26 -3
- package/dist/errors-CL63UOzt.mjs.map +1 -0
- package/dist/{formatter-DtHzbP22.d.mts → formatter-DrvhDMrq.d.mts} +3 -3
- package/dist/formatter-DrvhDMrq.d.mts.map +1 -0
- package/dist/{help-bbmu9-qd.mjs → help-B5Kk83of.mjs} +151 -37
- package/dist/help-B5Kk83of.mjs.map +1 -0
- package/dist/{types-Ch8Mk6Qb.d.mts → index-BaU3X6dY.d.mts} +621 -750
- package/dist/index-BaU3X6dY.d.mts.map +1 -0
- package/dist/index.d.mts +735 -37
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +3409 -1563
- package/dist/index.mjs.map +1 -1
- package/dist/{mcp-mLWIdUIu.mjs → mcp-BM-d0nZi.mjs} +13 -15
- package/dist/mcp-BM-d0nZi.mjs.map +1 -0
- package/dist/{serve-B0u43DK7.mjs → serve-Bk0JUlCj.mjs} +12 -14
- package/dist/serve-Bk0JUlCj.mjs.map +1 -0
- package/dist/{stream-BcC146Ud.mjs → stream-DC4H8YTx.mjs} +24 -3
- package/dist/stream-DC4H8YTx.mjs.map +1 -0
- package/dist/test.d.mts +5 -8
- package/dist/test.d.mts.map +1 -1
- package/dist/test.mjs +2 -13
- package/dist/test.mjs.map +1 -1
- package/dist/{update-check-CFX1FV3v.mjs → update-check-CZ2VqjnV.mjs} +16 -17
- package/dist/update-check-CZ2VqjnV.mjs.map +1 -0
- package/dist/zod.d.mts +2 -2
- package/dist/zod.d.mts.map +1 -1
- package/dist/zod.mjs +2 -2
- package/dist/zod.mjs.map +1 -1
- package/package.json +15 -12
- package/src/cli/completions.ts +14 -11
- package/src/cli/docs.ts +13 -10
- package/src/cli/doctor.ts +22 -18
- package/src/cli/index.ts +28 -82
- package/src/cli/init.ts +10 -7
- package/src/cli/link.ts +20 -16
- package/src/cli/wrap.ts +14 -11
- package/src/codegen/schema-to-code.ts +2 -2
- package/src/{args.ts → core/args.ts} +32 -225
- package/src/core/commands.ts +373 -0
- package/src/core/create.ts +268 -0
- package/src/core/default-runtime.ts +239 -0
- package/src/{errors.ts → core/errors.ts} +22 -0
- package/src/core/exec.ts +259 -0
- package/src/core/interceptors.ts +302 -0
- package/src/{parse.ts → core/parse.ts} +36 -89
- package/src/core/program-methods.ts +301 -0
- package/src/core/results.ts +229 -0
- package/src/core/runtime.ts +246 -0
- package/src/core/validate.ts +247 -0
- package/src/docs/index.ts +12 -13
- package/src/extension/auto-output.ts +95 -0
- package/src/extension/color.ts +38 -0
- package/src/extension/completion.ts +49 -0
- package/src/extension/config.ts +262 -0
- package/src/extension/env.ts +101 -0
- package/src/extension/help.ts +192 -0
- package/src/extension/index.ts +43 -0
- package/src/extension/ink.ts +93 -0
- package/src/extension/interactive.ts +106 -0
- package/src/extension/logger.ts +214 -0
- package/src/extension/man.ts +51 -0
- package/src/extension/mcp.ts +52 -0
- package/src/extension/progress-renderer.ts +338 -0
- package/src/extension/progress.ts +299 -0
- package/src/extension/repl.ts +94 -0
- package/src/extension/serve.ts +48 -0
- package/src/extension/signal.ts +87 -0
- package/src/extension/stdin.ts +62 -0
- package/src/extension/suggestions.ts +114 -0
- package/src/extension/timing.ts +81 -0
- package/src/extension/tracing.ts +175 -0
- package/src/extension/update-check.ts +77 -0
- package/src/extension/utils.ts +51 -0
- package/src/extension/version.ts +63 -0
- package/src/{completion.ts → feature/completion.ts} +12 -12
- package/src/{interactive.ts → feature/interactive.ts} +4 -4
- package/src/{mcp.ts → feature/mcp.ts} +12 -15
- package/src/{repl-loop.ts → feature/repl-loop.ts} +10 -13
- package/src/{serve.ts → feature/serve.ts} +11 -15
- package/src/feature/test.ts +262 -0
- package/src/{update-check.ts → feature/update-check.ts} +16 -16
- package/src/{wrap.ts → feature/wrap.ts} +10 -8
- package/src/index.ts +111 -30
- package/src/{formatter.ts → output/formatter.ts} +131 -31
- package/src/{help.ts → output/help.ts} +22 -8
- package/src/{zod.d.ts → schema/zod.d.ts} +1 -1
- package/src/schema/zod.ts +50 -0
- package/src/test.ts +2 -276
- package/src/types/args-meta.ts +151 -0
- package/src/types/builder.ts +697 -0
- package/src/types/command.ts +157 -0
- package/src/types/index.ts +59 -0
- package/src/types/interceptor.ts +296 -0
- package/src/types/preferences.ts +83 -0
- package/src/types/result.ts +71 -0
- package/src/types/schema.ts +19 -0
- package/src/util/dotenv.ts +244 -0
- package/src/{shell-utils.ts → util/shell-utils.ts} +26 -9
- package/src/{stream.ts → util/stream.ts} +27 -1
- package/src/{type-helpers.ts → util/type-helpers.ts} +23 -16
- package/src/{type-utils.ts → util/type-utils.ts} +71 -33
- package/src/util/utils.ts +51 -0
- package/src/zod.ts +1 -50
- package/dist/args-D5PNDyNu.mjs.map +0 -1
- package/dist/chunk-CjcI7cDX.mjs +0 -15
- package/dist/command-utils-B1D-HqCd.mjs +0 -1117
- package/dist/command-utils-B1D-HqCd.mjs.map +0 -1
- package/dist/completion.d.mts +0 -64
- package/dist/completion.d.mts.map +0 -1
- package/dist/completion.mjs.map +0 -1
- package/dist/errors-BiVrBgi6.mjs.map +0 -1
- package/dist/formatter-DtHzbP22.d.mts.map +0 -1
- package/dist/help-bbmu9-qd.mjs.map +0 -1
- package/dist/mcp-mLWIdUIu.mjs.map +0 -1
- package/dist/serve-B0u43DK7.mjs.map +0 -1
- package/dist/stream-BcC146Ud.mjs.map +0 -1
- package/dist/types-Ch8Mk6Qb.d.mts.map +0 -1
- package/dist/update-check-CFX1FV3v.mjs.map +0 -1
- package/src/command-utils.ts +0 -882
- package/src/create.ts +0 -1829
- package/src/runtime.ts +0 -497
- package/src/types.ts +0 -1291
- package/src/utils.ts +0 -140
- /package/src/{colorizer.ts → output/colorizer.ts} +0 -0
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
type Letter =
|
|
2
|
+
| 'a'
|
|
3
|
+
| 'b'
|
|
4
|
+
| 'c'
|
|
5
|
+
| 'd'
|
|
6
|
+
| 'e'
|
|
7
|
+
| 'f'
|
|
8
|
+
| 'g'
|
|
9
|
+
| 'h'
|
|
10
|
+
| 'i'
|
|
11
|
+
| 'j'
|
|
12
|
+
| 'k'
|
|
13
|
+
| 'l'
|
|
14
|
+
| 'm'
|
|
15
|
+
| 'n'
|
|
16
|
+
| 'o'
|
|
17
|
+
| 'p'
|
|
18
|
+
| 'q'
|
|
19
|
+
| 'r'
|
|
20
|
+
| 's'
|
|
21
|
+
| 't'
|
|
22
|
+
| 'u'
|
|
23
|
+
| 'v'
|
|
24
|
+
| 'w'
|
|
25
|
+
| 'x'
|
|
26
|
+
| 'y'
|
|
27
|
+
| 'z';
|
|
28
|
+
|
|
29
|
+
/** A single letter character, valid as a short CLI flag (e.g. `'v'`, `'n'`, `'V'`). */
|
|
30
|
+
export type SingleChar = Letter | Uppercase<Letter>;
|
|
31
|
+
|
|
32
|
+
export interface PadroneFieldMeta {
|
|
33
|
+
description?: string;
|
|
34
|
+
/** Single-character short flags (stackable: `-abc` = `-a -b -c`). Used with single dash. */
|
|
35
|
+
flags?: readonly SingleChar[] | SingleChar;
|
|
36
|
+
/** Multi-character alternative long names. Used with double dash (e.g. `--dry-run` for `--dryRun`). */
|
|
37
|
+
alias?: readonly string[] | string;
|
|
38
|
+
deprecated?: boolean | string;
|
|
39
|
+
hidden?: boolean;
|
|
40
|
+
examples?: readonly unknown[];
|
|
41
|
+
/** Group name for organizing this option under a labeled section in help output. */
|
|
42
|
+
group?: string;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
type PositionalArgs<TObj> =
|
|
46
|
+
TObj extends Record<string, any>
|
|
47
|
+
? {
|
|
48
|
+
[K in keyof TObj]: NonNullable<TObj[K]> extends Array<any> ? `...${K & string}` | (K & string) : K & string;
|
|
49
|
+
}[keyof TObj]
|
|
50
|
+
: string;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Meta configuration for arguments, including positional arguments.
|
|
54
|
+
* The `positional` array defines which arguments are positional and their order.
|
|
55
|
+
* Use '...name' prefix to indicate variadic (rest) arguments, matching JS/TS rest syntax.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```ts
|
|
59
|
+
* .arguments(schema, {
|
|
60
|
+
* positional: ['source', '...files', 'dest'], // '...files' is variadic
|
|
61
|
+
* })
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
/**
|
|
65
|
+
* Configuration for reading from stdin and mapping it to an argument field.
|
|
66
|
+
* Simply specify the field name — the read mode is inferred from the schema:
|
|
67
|
+
* - `string` field → reads all stdin as text
|
|
68
|
+
* - `string[]` field → reads stdin line-by-line
|
|
69
|
+
*/
|
|
70
|
+
export type StdinConfig<TObj = Record<string, any>> = keyof TObj & string;
|
|
71
|
+
|
|
72
|
+
export interface PadroneArgsSchemaMeta<TObj = Record<string, any>> {
|
|
73
|
+
/**
|
|
74
|
+
* Array of argument names that should be treated as positional arguments.
|
|
75
|
+
* Order in array determines position. Use '...name' prefix for variadic args.
|
|
76
|
+
* @example ['source', '...files', 'dest'] - 'files' captures multiple values
|
|
77
|
+
*/
|
|
78
|
+
positional?: readonly PositionalArgs<TObj>[];
|
|
79
|
+
/**
|
|
80
|
+
* Per-argument metadata.
|
|
81
|
+
*/
|
|
82
|
+
fields?: { [K in keyof TObj]?: PadroneFieldMeta };
|
|
83
|
+
/**
|
|
84
|
+
* Automatically generate kebab-case aliases for camelCase option names.
|
|
85
|
+
* For example, `dryRun` automatically gets `--dry-run` as an alias.
|
|
86
|
+
* Defaults to `true`. Set to `false` to disable.
|
|
87
|
+
*
|
|
88
|
+
* @default true
|
|
89
|
+
* @example
|
|
90
|
+
* ```ts
|
|
91
|
+
* // Auto-aliases enabled (default): --dry-run → dryRun
|
|
92
|
+
* .arguments(z.object({ dryRun: z.boolean() }))
|
|
93
|
+
*
|
|
94
|
+
* // Disable auto-aliases
|
|
95
|
+
* .arguments(z.object({ dryRun: z.boolean() }), { autoAlias: false })
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
autoAlias?: boolean;
|
|
99
|
+
/**
|
|
100
|
+
* Read from stdin and inject the data into the specified argument field.
|
|
101
|
+
* Only reads when stdin is piped (not a TTY) and the field wasn't already provided via CLI flags.
|
|
102
|
+
*
|
|
103
|
+
* The read mode is inferred from the schema type of the target field:
|
|
104
|
+
* - `string` field → reads all stdin as a single string
|
|
105
|
+
* - `string[]` field → reads stdin line-by-line into an array
|
|
106
|
+
*
|
|
107
|
+
* Precedence: CLI flags > stdin > env vars > config file > schema defaults.
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* ```ts
|
|
111
|
+
* // Read all stdin as text into 'data' field
|
|
112
|
+
* .arguments(z.object({ data: z.string() }), { stdin: 'data' })
|
|
113
|
+
*
|
|
114
|
+
* // Read stdin lines into 'lines' field (inferred from array schema)
|
|
115
|
+
* .arguments(z.object({ lines: z.string().array() }), { stdin: 'lines' })
|
|
116
|
+
* ```
|
|
117
|
+
*/
|
|
118
|
+
stdin?: StdinConfig<TObj>;
|
|
119
|
+
/**
|
|
120
|
+
* Fields to interactively prompt for when their values are missing after CLI/env/config resolution.
|
|
121
|
+
* - `true`: prompt for all required fields that are missing.
|
|
122
|
+
* - `string[]`: prompt for these specific fields if missing.
|
|
123
|
+
*
|
|
124
|
+
* Interactive prompting only occurs in `cli()` when the runtime has `interactive: true`.
|
|
125
|
+
* Setting this makes `parse()` and `cli()` return Promises.
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```ts
|
|
129
|
+
* .arguments(schema, {
|
|
130
|
+
* interactive: true, // prompt all missing required fields
|
|
131
|
+
* interactive: ['name', 'template'], // prompt only these fields
|
|
132
|
+
* })
|
|
133
|
+
* ```
|
|
134
|
+
*/
|
|
135
|
+
interactive?: true | readonly (keyof TObj & string)[];
|
|
136
|
+
/**
|
|
137
|
+
* Optional fields offered after required interactive prompts.
|
|
138
|
+
* Users are shown a multi-select to choose which of these fields to configure.
|
|
139
|
+
* - `true`: offer all optional fields that are missing.
|
|
140
|
+
* - `string[]`: offer these specific fields.
|
|
141
|
+
*
|
|
142
|
+
* @example
|
|
143
|
+
* ```ts
|
|
144
|
+
* .arguments(schema, {
|
|
145
|
+
* interactive: ['name'],
|
|
146
|
+
* optionalInteractive: ['typescript', 'eslint', 'prettier'],
|
|
147
|
+
* })
|
|
148
|
+
* ```
|
|
149
|
+
*/
|
|
150
|
+
optionalInteractive?: true | readonly (keyof TObj & string)[];
|
|
151
|
+
}
|