zodline 0.3.0 โ 0.3.1
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/README.md +206 -154
- package/dist/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +71 -12
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +23 -9
- package/example.js +0 -65
package/README.md
CHANGED
|
@@ -2,23 +2,26 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/zodline)
|
|
4
4
|
[](https://www.npmjs.com/package/zodline)
|
|
5
|
-
[](https://github.com/
|
|
5
|
+
[](https://github.com/capawesome-team/zodline/blob/main/LICENSE)
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Build type-safe command-line interfaces with Zod. Declare your commands, options and arguments as schemas โ validation, TypeScript types and help output come for free.
|
|
8
|
+
|
|
9
|
+
๐ **[Documentation](https://zodline.dev/docs)** ยท [Quickstart](https://zodline.dev/docs/quickstart) ยท [API reference](https://zodline.dev/docs/reference/api)
|
|
8
10
|
|
|
9
11
|
## Features
|
|
10
12
|
|
|
11
|
-
- ๐ก๏ธ **Type-safe**:
|
|
12
|
-
- ๐ **Declarative**:
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
13
|
+
- ๐ก๏ธ **Type-safe**: `options` and `args` are inferred from your schemas. Rename a field and every call site fails to compile.
|
|
14
|
+
- ๐ **Declarative**: A command is a plain object โ description, schemas, action. No builder chains.
|
|
15
|
+
- โ
**Validation included**: Coercion, defaults, refinements, unions โ anything Zod can express, your CLI can accept.
|
|
16
|
+
- ๐ซ **Strict by default**: Unknown flags are errors, not silently ignored keys. Typos surface immediately.
|
|
17
|
+
- โ **Generated help**: `--help` and `--version` are handled for you, including per-command help.
|
|
18
|
+
- ๐ **Zero dependencies**: Only Zod, which you already have.
|
|
19
|
+
|
|
20
|
+
## Requirements
|
|
21
|
+
|
|
22
|
+
- Node.js 16 or later
|
|
23
|
+
- Zod 4 (peer dependency)
|
|
24
|
+
- An ESM project โ `zodline` ships no CommonJS build
|
|
22
25
|
|
|
23
26
|
## Installation
|
|
24
27
|
|
|
@@ -26,228 +29,277 @@ A powerful CLI parser built with TypeScript and Zod for type-safe command-line i
|
|
|
26
29
|
npm install zodline zod
|
|
27
30
|
```
|
|
28
31
|
|
|
29
|
-
##
|
|
30
|
-
|
|
31
|
-
`zodline` was previously published as `@robingenz/zli`. To migrate:
|
|
32
|
-
|
|
33
|
-
1. Replace the dependency:
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
npm uninstall @robingenz/zli
|
|
37
|
-
npm install zodline
|
|
38
|
-
```
|
|
32
|
+
## Quickstart
|
|
39
33
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
```diff
|
|
43
|
-
- import { ... } from '@robingenz/zli';
|
|
44
|
-
+ import { ... } from 'zodline';
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
3. Rename the `ZliError` export to `ZodlineError` (the public API is otherwise unchanged):
|
|
48
|
-
|
|
49
|
-
```diff
|
|
50
|
-
- import { ZliError } from '@robingenz/zli';
|
|
51
|
-
+ import { ZodlineError } from 'zodline';
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
## Usage
|
|
55
|
-
|
|
56
|
-
### Basic Example
|
|
57
|
-
|
|
58
|
-
```javascript
|
|
34
|
+
```ts
|
|
59
35
|
import { z } from 'zod';
|
|
60
|
-
import {
|
|
36
|
+
import { defineCommand, defineConfig, defineOptions, processConfig } from 'zodline';
|
|
61
37
|
|
|
62
|
-
|
|
63
|
-
const greetCommand = defineCommand({
|
|
38
|
+
const greet = defineCommand({
|
|
64
39
|
description: 'Greet someone',
|
|
65
40
|
options: defineOptions(
|
|
66
41
|
z.object({
|
|
67
42
|
name: z.string().describe('Name to greet'),
|
|
68
43
|
loud: z.boolean().default(false).describe('Use uppercase'),
|
|
69
44
|
}),
|
|
70
|
-
{ n: 'name', l: 'loud' } // Short aliases
|
|
45
|
+
{ n: 'name', l: 'loud' }, // Short aliases
|
|
71
46
|
),
|
|
72
47
|
action: async (options) => {
|
|
48
|
+
// options is typed as { name: string; loud: boolean }
|
|
73
49
|
const greeting = `Hello, ${options.name}!`;
|
|
74
50
|
console.log(options.loud ? greeting.toUpperCase() : greeting);
|
|
75
51
|
},
|
|
76
52
|
});
|
|
77
53
|
|
|
78
|
-
// Configure the CLI
|
|
79
54
|
const config = defineConfig({
|
|
80
55
|
meta: {
|
|
81
56
|
name: 'my-cli',
|
|
82
57
|
version: '1.0.0',
|
|
83
58
|
description: 'A simple CLI example',
|
|
84
59
|
},
|
|
85
|
-
commands: {
|
|
86
|
-
greet: greetCommand,
|
|
87
|
-
},
|
|
88
|
-
defaultCommand: greetCommand,
|
|
60
|
+
commands: { greet },
|
|
89
61
|
});
|
|
90
62
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
const result = processConfig(config, process.argv.slice(2));
|
|
94
|
-
await result.command.action(result.options, result.args);
|
|
95
|
-
} catch (error) {
|
|
96
|
-
console.error('Error:', error.message);
|
|
97
|
-
process.exit(1);
|
|
98
|
-
}
|
|
63
|
+
const result = processConfig(config, process.argv.slice(2));
|
|
64
|
+
await result.command.action(result.options, result.args);
|
|
99
65
|
```
|
|
100
66
|
|
|
101
|
-
|
|
67
|
+
Run it:
|
|
102
68
|
|
|
103
69
|
```bash
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
70
|
+
$ my-cli greet --name Alice
|
|
71
|
+
Hello, Alice!
|
|
72
|
+
|
|
73
|
+
$ my-cli greet -n Bob --loud
|
|
74
|
+
HELLO, BOB!
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Help is generated from the same schemas:
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
$ my-cli --help
|
|
81
|
+
|
|
82
|
+
A simple CLI example (my-cli v1.0.0)
|
|
83
|
+
|
|
84
|
+
USAGE my-cli <command>
|
|
85
|
+
|
|
86
|
+
COMMANDS
|
|
87
|
+
|
|
88
|
+
greet Greet someone
|
|
107
89
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
90
|
+
Use my-cli <command> --help for more information about a command.
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
$ my-cli greet --help
|
|
95
|
+
|
|
96
|
+
Greet someone (my-cli greet v1.0.0)
|
|
111
97
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
98
|
+
USAGE my-cli greet [OPTIONS]
|
|
99
|
+
|
|
100
|
+
OPTIONS
|
|
101
|
+
|
|
102
|
+
--name, -n Name to greet
|
|
103
|
+
--loud, -l Use uppercase (default: false)
|
|
115
104
|
```
|
|
116
105
|
|
|
117
|
-
|
|
106
|
+
## Usage
|
|
118
107
|
|
|
119
|
-
|
|
108
|
+
### Commands
|
|
120
109
|
|
|
121
|
-
|
|
110
|
+
Commands are a flat record of name to definition. Group related commands with a separator in the name:
|
|
122
111
|
|
|
123
|
-
```
|
|
112
|
+
```ts
|
|
124
113
|
const config = defineConfig({
|
|
125
|
-
meta: {
|
|
126
|
-
name: 'my-app',
|
|
127
|
-
version: '1.0.0',
|
|
128
|
-
},
|
|
114
|
+
meta: { name: 'my-app', version: '1.0.0' },
|
|
129
115
|
commands: {
|
|
130
116
|
start: startCommand,
|
|
131
|
-
|
|
117
|
+
'apps:list': appsListCommand,
|
|
118
|
+
'apps:create': appsCreateCommand,
|
|
132
119
|
},
|
|
133
|
-
defaultCommand: startCommand,
|
|
134
120
|
});
|
|
135
121
|
```
|
|
136
122
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
- `my-app --help` will still show the help message
|
|
140
|
-
- `my-app build` will run the `build` command
|
|
141
|
-
|
|
142
|
-
#### Commands with Arguments
|
|
123
|
+
Use a space as the separator to get subcommands. The longest matching name wins and the remaining positional
|
|
124
|
+
arguments become `args`:
|
|
143
125
|
|
|
144
|
-
```
|
|
145
|
-
const
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
]),
|
|
151
|
-
options: defineOptions(
|
|
152
|
-
z.object({
|
|
153
|
-
verbose: z.boolean().default(false).describe('Verbose output'),
|
|
154
|
-
}),
|
|
155
|
-
{ v: 'verbose' }
|
|
156
|
-
),
|
|
157
|
-
action: async (options, args) => {
|
|
158
|
-
const [source, dest] = args;
|
|
159
|
-
console.log(`Copying ${source} to ${dest}`);
|
|
126
|
+
```ts
|
|
127
|
+
const config = defineConfig({
|
|
128
|
+
meta: { name: 'my-app', version: '1.0.0' },
|
|
129
|
+
commands: {
|
|
130
|
+
'config set': configSetCommand,
|
|
131
|
+
'config get': configGetCommand,
|
|
160
132
|
},
|
|
161
133
|
});
|
|
162
134
|
```
|
|
163
135
|
|
|
164
|
-
|
|
136
|
+
- `my-app config set theme dark` runs `configSetCommand` with the args `['theme', 'dark']`
|
|
137
|
+
- `my-app config --help` lists only the `config` commands
|
|
138
|
+
|
|
139
|
+
Set `defaultCommand` to run a command when none is given:
|
|
140
|
+
|
|
141
|
+
```ts
|
|
142
|
+
const config = defineConfig({
|
|
143
|
+
meta: { name: 'my-app', version: '1.0.0' },
|
|
144
|
+
commands: { start: startCommand, build: buildCommand },
|
|
145
|
+
defaultCommand: startCommand,
|
|
146
|
+
});
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
- `my-app` runs `startCommand`
|
|
150
|
+
- `my-app build` runs `buildCommand`
|
|
151
|
+
- `my-app --help` still shows the help message
|
|
165
152
|
|
|
166
|
-
|
|
153
|
+
### Options
|
|
154
|
+
|
|
155
|
+
`defineOptions` takes a Zod object schema and an optional map from short alias to schema key. The `.describe()` text becomes the option's help line, and `.default()` is shown in help.
|
|
156
|
+
|
|
157
|
+
```ts
|
|
167
158
|
const options = defineOptions(
|
|
168
159
|
z.object({
|
|
160
|
+
port: z.coerce.number().min(1).max(65535).default(3000).describe('Port to listen on'),
|
|
169
161
|
files: z.array(z.string()).describe('Input files'),
|
|
170
162
|
tags: z.array(z.string()).optional().describe('Tags to apply'),
|
|
171
|
-
})
|
|
163
|
+
}),
|
|
164
|
+
{ p: 'port', f: 'files' },
|
|
172
165
|
);
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Everything from the command line arrives as a string, so use `z.coerce` for numbers and other non-string types.
|
|
173
169
|
|
|
174
|
-
|
|
175
|
-
|
|
170
|
+
A single value for an array field is wrapped automatically, so both of these produce `['a.txt']`:
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
--files a.txt
|
|
174
|
+
--files a.txt --files b.txt # ['a.txt', 'b.txt']
|
|
176
175
|
```
|
|
177
176
|
|
|
178
|
-
|
|
177
|
+
### Arguments
|
|
179
178
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
)
|
|
179
|
+
Positional arguments are validated by a single schema that receives the whole array. Use `z.tuple` for a fixed shape and `z.array` for a variable number:
|
|
180
|
+
|
|
181
|
+
```ts
|
|
182
|
+
const copy = defineCommand({
|
|
183
|
+
description: 'Copy a file',
|
|
184
|
+
args: z.tuple([z.string().describe('Source file'), z.string().describe('Destination file')]),
|
|
185
|
+
options: defineOptions(z.object({ verbose: z.boolean().default(false) }), { v: 'verbose' }),
|
|
186
|
+
action: async (options, args) => {
|
|
187
|
+
const [source, destination] = args; // [string, string]
|
|
188
|
+
console.log(`Copying ${source} to ${destination}`);
|
|
189
|
+
},
|
|
190
|
+
});
|
|
187
191
|
```
|
|
188
192
|
|
|
189
|
-
### Flag
|
|
193
|
+
### Flag syntax
|
|
190
194
|
|
|
191
|
-
|
|
195
|
+
| Form | Example | Result |
|
|
196
|
+
| --- | --- | --- |
|
|
197
|
+
| Long flag | `--verbose` | `verbose: true` |
|
|
198
|
+
| Long flag with value | `--port 3000`, `--port=3000` | `port: '3000'` |
|
|
199
|
+
| Short flag | `-v`, `-p 3000` | resolved through the alias map |
|
|
200
|
+
| Clustered short flags | `-abc` | `a: true, b: true, c: true` |
|
|
201
|
+
| Kebab-case | `--max-retries` | matches the schema key `maxRetries` |
|
|
202
|
+
| Repeated flag | `--file a.txt --file b.txt` | `file: ['a.txt', 'b.txt']` |
|
|
192
203
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
204
|
+
A flag whose next argument starts with `-`, or which is last, becomes `true`.
|
|
205
|
+
|
|
206
|
+
### Help and version
|
|
196
207
|
|
|
197
|
-
|
|
198
|
-
-
|
|
208
|
+
- `<cli> --help` prints the command list, `<cli> <command> --help` prints that command's options.
|
|
209
|
+
- `<cli> --version` prints `meta.version`. It is only handled when no command is given and `meta.version` is set.
|
|
199
210
|
|
|
200
|
-
|
|
201
|
-
-abc # equivalent to -a -b -c
|
|
211
|
+
Both paths print to stdout and call `process.exit(0)`. Keep that in mind when calling `processConfig` from tests.
|
|
202
212
|
|
|
203
|
-
|
|
204
|
-
|
|
213
|
+
### Error handling
|
|
214
|
+
|
|
215
|
+
`processConfig` validates and returns โ it never invokes your action. That keeps parsing and execution separate, so commands stay testable.
|
|
216
|
+
|
|
217
|
+
```ts
|
|
218
|
+
import { z } from 'zod';
|
|
219
|
+
import { processConfig, ZodlineError } from 'zodline';
|
|
205
220
|
|
|
206
|
-
|
|
207
|
-
|
|
221
|
+
try {
|
|
222
|
+
const result = processConfig(config, process.argv.slice(2));
|
|
223
|
+
await result.command.action(result.options, result.args);
|
|
224
|
+
} catch (error) {
|
|
225
|
+
if (error instanceof ZodlineError) {
|
|
226
|
+
// Unknown command, unknown option, or no command specified
|
|
227
|
+
console.error(error.message);
|
|
228
|
+
} else if (error instanceof z.ZodError) {
|
|
229
|
+
// An option failed schema validation
|
|
230
|
+
console.error(z.prettifyError(error));
|
|
231
|
+
} else {
|
|
232
|
+
throw error;
|
|
233
|
+
}
|
|
234
|
+
process.exit(1);
|
|
235
|
+
}
|
|
208
236
|
```
|
|
209
237
|
|
|
210
|
-
|
|
238
|
+
Positional argument failures are currently thrown as a plain `Error` prefixed with `Argument validation failed:`.
|
|
211
239
|
|
|
212
|
-
|
|
240
|
+
## API
|
|
213
241
|
|
|
214
|
-
|
|
242
|
+
| Export | Description |
|
|
243
|
+
| --- | --- |
|
|
244
|
+
| `defineOptions(schema, aliases?)` | Pairs a Zod object schema with an optional short-alias map. |
|
|
245
|
+
| `defineCommand(definition)` | Defines a command from a `description`, `examples`, `options`, `args` and `action`. |
|
|
246
|
+
| `defineConfig(config)` | Defines the CLI from `meta`, `commands` and an optional `defaultCommand`. |
|
|
247
|
+
| `processConfig(config, argv)` | Parses and validates `argv`, returning `{ command, options, args }`. |
|
|
248
|
+
| `ZodlineError` | Thrown for unknown commands and unknown options. |
|
|
215
249
|
|
|
216
|
-
|
|
217
|
-
- `aliases`: Optional object mapping short aliases to option names
|
|
250
|
+
See the [API reference](https://zodline.dev/docs/reference/api) for full signatures and types.
|
|
218
251
|
|
|
219
|
-
|
|
252
|
+
## Comparison
|
|
220
253
|
|
|
221
|
-
|
|
254
|
+
| | zodline | commander | yargs |
|
|
255
|
+
| --- | --- | --- | --- |
|
|
256
|
+
| Validation | Zod schemas | custom parser functions | built-in coercions |
|
|
257
|
+
| Option types | inferred from the schema | manual type annotations | inferred from the builder chain |
|
|
258
|
+
| Runtime dependencies | 0 | 0 | 6 |
|
|
259
|
+
| Module format | ESM only | CJS and ESM | CJS and ESM |
|
|
260
|
+
| Parsing and execution | separate | coupled | coupled |
|
|
222
261
|
|
|
223
|
-
|
|
224
|
-
- `options`: Options definition (optional)
|
|
225
|
-
- `args`: Zod schema for arguments (optional)
|
|
226
|
-
- `action`: Function to execute when command is run
|
|
262
|
+
Dependency counts as of commander 15 and yargs 18. Both cover more surface than `zodline` โ nested subcommands, shell completion, i18n. `zodline` is deliberately smaller and leans on Zod for everything it can.
|
|
227
263
|
|
|
228
|
-
|
|
264
|
+
## Used By
|
|
229
265
|
|
|
230
|
-
|
|
266
|
+
- [Capawesome Team CLI](https://github.com/capawesome-team/cli) โ the Capawesome Cloud CLI to manage Live Updates and more.
|
|
231
267
|
|
|
232
|
-
|
|
233
|
-
- `commands`: Object mapping command names to definitions
|
|
234
|
-
- `defaultCommand`: Optional default command definition to run when no command is specified
|
|
268
|
+
## Contributing
|
|
235
269
|
|
|
236
|
-
|
|
270
|
+
```bash
|
|
271
|
+
npm install
|
|
272
|
+
npm test
|
|
273
|
+
npm run build
|
|
274
|
+
npm run lint
|
|
275
|
+
```
|
|
237
276
|
|
|
238
|
-
|
|
277
|
+
Bug reports and feature requests are welcome in the [issue tracker](https://github.com/capawesome-team/zodline/issues).
|
|
239
278
|
|
|
240
|
-
|
|
241
|
-
- `args`: Command line arguments (typically `process.argv.slice(2)`)
|
|
279
|
+
## Migration
|
|
242
280
|
|
|
243
|
-
|
|
244
|
-
- `command`: The matched command definition
|
|
245
|
-
- `options`: Parsed and validated options
|
|
246
|
-
- `args`: Parsed and validated arguments
|
|
281
|
+
`zodline` was previously published as `@robingenz/zli`. To migrate:
|
|
247
282
|
|
|
248
|
-
|
|
283
|
+
1. Replace the dependency:
|
|
284
|
+
|
|
285
|
+
```bash
|
|
286
|
+
npm uninstall @robingenz/zli
|
|
287
|
+
npm install zodline
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
2. Update import specifiers:
|
|
249
291
|
|
|
250
|
-
|
|
292
|
+
```diff
|
|
293
|
+
- import { ... } from '@robingenz/zli';
|
|
294
|
+
+ import { ... } from 'zodline';
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
3. Rename the `ZliError` export to `ZodlineError` (the public API is otherwise unchanged):
|
|
298
|
+
|
|
299
|
+
```diff
|
|
300
|
+
- import { ZliError } from '@robingenz/zli';
|
|
301
|
+
+ import { ZodlineError } from 'zodline';
|
|
302
|
+
```
|
|
251
303
|
|
|
252
304
|
## Changelog
|
|
253
305
|
|
|
@@ -255,4 +307,4 @@ See [CHANGELOG.md](./CHANGELOG.md).
|
|
|
255
307
|
|
|
256
308
|
## License
|
|
257
309
|
|
|
258
|
-
See [LICENSE](./LICENSE).
|
|
310
|
+
See [LICENSE](./LICENSE).
|
package/dist/config.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import type { OptionsDefinition, CommandDefinition, DefineConfig } from './types
|
|
|
3
3
|
export declare function defineOptions<T extends z.ZodObject<any> = z.ZodObject<any>>(schema: T, aliases?: Record<string, string>): OptionsDefinition<T>;
|
|
4
4
|
export declare function defineCommand<TOptions extends OptionsDefinition<any> | undefined = undefined, TArgs extends z.ZodType | undefined = undefined>(config: {
|
|
5
5
|
description?: string;
|
|
6
|
+
examples?: string[];
|
|
6
7
|
options?: TOptions;
|
|
7
8
|
args?: TArgs;
|
|
8
9
|
action: (options: TOptions extends OptionsDefinition<infer U> ? z.infer<U> : {}, args: TArgs extends z.ZodType ? z.infer<TArgs> : undefined) => void | Promise<void>;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAErF,wBAAgB,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EACzE,MAAM,EAAE,CAAC,EACT,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,iBAAiB,CAAC,CAAC,CAAC,CAEtB;AAED,wBAAgB,aAAa,CAC3B,QAAQ,SAAS,iBAAiB,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,SAAS,EAC/D,KAAK,SAAS,CAAC,CAAC,OAAO,GAAG,SAAS,GAAG,SAAS,EAC/C,MAAM,EAAE;IACR,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,CACN,OAAO,EAAE,QAAQ,SAAS,iBAAiB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,EACtE,IAAI,EAAE,KAAK,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,SAAS,KACvD,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B,GAAG,iBAAiB,CAAC,QAAQ,SAAS,iBAAiB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAE/F;AAED,wBAAgB,YAAY,CAAC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAC7F,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,GAC9B,YAAY,CAAC,SAAS,CAAC,CAEzB"}
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAErF,wBAAgB,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EACzE,MAAM,EAAE,CAAC,EACT,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,iBAAiB,CAAC,CAAC,CAAC,CAEtB;AAED,wBAAgB,aAAa,CAC3B,QAAQ,SAAS,iBAAiB,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,SAAS,EAC/D,KAAK,SAAS,CAAC,CAAC,OAAO,GAAG,SAAS,GAAG,SAAS,EAC/C,MAAM,EAAE;IACR,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,CACN,OAAO,EAAE,QAAQ,SAAS,iBAAiB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,EACtE,IAAI,EAAE,KAAK,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,SAAS,KACvD,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B,GAAG,iBAAiB,CAAC,QAAQ,SAAS,iBAAiB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAE/F;AAED,wBAAgB,YAAY,CAAC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAC7F,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,GAC9B,YAAY,CAAC,SAAS,CAAC,CAEzB"}
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,aAAa,CAC3B,MAAS,EACT,OAAgC;IAEhC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,aAAa,CAG3B,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,aAAa,CAC3B,MAAS,EACT,OAAgC;IAEhC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,aAAa,CAG3B,MASD;IACC,OAAO,MAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,MAA+B;IAE/B,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -12,6 +12,10 @@ import type { CommandDefinition, DefineConfig, ProcessResult } from './types.js'
|
|
|
12
12
|
* @example
|
|
13
13
|
* processConfig(config, ['apps:bundles:create', '--android-max', '10'])
|
|
14
14
|
* // Returns: { command: ..., options: { androidMax: '10' }, args: [] }
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* processConfig(config, ['config', 'set', 'theme'])
|
|
18
|
+
* // Matches the multi-word command 'config set' and returns: { command: ..., options: {}, args: ['theme'] }
|
|
15
19
|
*/
|
|
16
20
|
export declare function processConfig<TCommands extends Record<string, CommandDefinition<any, any>> = {}>(config: DefineConfig<TCommands>, args: string[]): ProcessResult<CommandDefinition<any, any>>;
|
|
17
21
|
export { defineOptions, defineCommand, defineConfig } from './config.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAqB,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAqB,aAAa,EAAE,MAAM,YAAY,CAAC;AAwjBpG;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAC9F,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,EAC/B,IAAI,EAAE,MAAM,EAAE,GACb,aAAa,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAiD5C;AAGD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -181,9 +181,8 @@ function displayHelp(commands, meta) {
|
|
|
181
181
|
packageName: meta?.name,
|
|
182
182
|
version: meta?.version,
|
|
183
183
|
});
|
|
184
|
-
const commandNames = Object.keys(commands).join('|');
|
|
185
184
|
const usageName = meta?.name || 'cli';
|
|
186
|
-
console.log(`\x1b[1mUSAGE\x1b[0m \x1b[36m${usageName}
|
|
185
|
+
console.log(`\x1b[1mUSAGE\x1b[0m \x1b[36m${usageName} <command>\x1b[0m\n`);
|
|
187
186
|
console.log('\x1b[1mCOMMANDS\x1b[0m\n');
|
|
188
187
|
// Find the maximum command name length for alignment
|
|
189
188
|
const maxLength = Math.max(...Object.keys(commands).map((name) => name.length));
|
|
@@ -222,10 +221,10 @@ function displayCommandHelp(commandName, command, meta) {
|
|
|
222
221
|
if (command.args) {
|
|
223
222
|
usageLine += ' [ARGS]';
|
|
224
223
|
}
|
|
225
|
-
console.log(`${usageLine}\x1b[0m
|
|
224
|
+
console.log(`${usageLine}\x1b[0m`);
|
|
226
225
|
// Display options if they exist
|
|
227
226
|
if (command.options?.schema) {
|
|
228
|
-
console.log('\x1b[1mOPTIONS\x1b[0m\n');
|
|
227
|
+
console.log('\n\x1b[1mOPTIONS\x1b[0m\n');
|
|
229
228
|
const shape = command.options.schema.shape;
|
|
230
229
|
const aliases = command.options.aliases || {};
|
|
231
230
|
// Calculate the maximum length for consistent padding
|
|
@@ -256,6 +255,20 @@ function displayCommandHelp(commandName, command, meta) {
|
|
|
256
255
|
console.log(`${optionLine}${padding}${finalDescription}`);
|
|
257
256
|
}
|
|
258
257
|
}
|
|
258
|
+
if (command.examples?.length) {
|
|
259
|
+
displayExamples(command.examples);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Displays the examples section of a command's help screen.
|
|
264
|
+
*
|
|
265
|
+
* @param examples - Example invocations, printed verbatim
|
|
266
|
+
*/
|
|
267
|
+
function displayExamples(examples) {
|
|
268
|
+
console.log('\n\x1b[1mEXAMPLES\x1b[0m\n');
|
|
269
|
+
for (const example of examples) {
|
|
270
|
+
console.log(` \x1b[36m${example}\x1b[0m`);
|
|
271
|
+
}
|
|
259
272
|
}
|
|
260
273
|
/**
|
|
261
274
|
* Normalizes single values to arrays for fields that are defined as arrays in the schema.
|
|
@@ -447,6 +460,41 @@ function processCommandExecution(command, parsedFlags, args) {
|
|
|
447
460
|
args: validatedArgs,
|
|
448
461
|
};
|
|
449
462
|
}
|
|
463
|
+
/**
|
|
464
|
+
* Finds the command name that matches the longest prefix of the given tokens.
|
|
465
|
+
* This allows multi-word command names such as 'config set'.
|
|
466
|
+
*
|
|
467
|
+
* @param commandNames - Names of all available commands
|
|
468
|
+
* @param tokens - Non-flag command line arguments
|
|
469
|
+
* @returns The matching command name, or undefined if no command matches
|
|
470
|
+
*
|
|
471
|
+
* @example
|
|
472
|
+
* findCommandName(['config', 'config set'], ['config', 'set', 'theme'])
|
|
473
|
+
* // Returns: 'config set'
|
|
474
|
+
*/
|
|
475
|
+
function findCommandName(commandNames, tokens) {
|
|
476
|
+
for (let wordCount = tokens.length; wordCount > 0; wordCount--) {
|
|
477
|
+
const candidate = tokens.slice(0, wordCount).join(' ');
|
|
478
|
+
if (commandNames.includes(candidate)) {
|
|
479
|
+
return candidate;
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
return undefined;
|
|
483
|
+
}
|
|
484
|
+
/**
|
|
485
|
+
* Returns the commands that belong to a group, i.e. whose name starts with the group name followed by a space.
|
|
486
|
+
*
|
|
487
|
+
* @param commands - Object mapping command names to their definitions
|
|
488
|
+
* @param groupName - First word of the multi-word command names to look for
|
|
489
|
+
* @returns Object containing only the commands of the group
|
|
490
|
+
*
|
|
491
|
+
* @example
|
|
492
|
+
* findCommandsInGroup({ 'config set': ..., 'config get': ..., login: ... }, 'config')
|
|
493
|
+
* // Returns: { 'config set': ..., 'config get': ... }
|
|
494
|
+
*/
|
|
495
|
+
function findCommandsInGroup(commands, groupName) {
|
|
496
|
+
return Object.fromEntries(Object.entries(commands).filter(([name]) => name.startsWith(`${groupName} `)));
|
|
497
|
+
}
|
|
450
498
|
/**
|
|
451
499
|
* Main entry point for processing CLI configuration and arguments.
|
|
452
500
|
* Parses command line arguments, validates options, and returns the processed result.
|
|
@@ -460,13 +508,16 @@ function processCommandExecution(command, parsedFlags, args) {
|
|
|
460
508
|
* @example
|
|
461
509
|
* processConfig(config, ['apps:bundles:create', '--android-max', '10'])
|
|
462
510
|
* // Returns: { command: ..., options: { androidMax: '10' }, args: [] }
|
|
511
|
+
*
|
|
512
|
+
* @example
|
|
513
|
+
* processConfig(config, ['config', 'set', 'theme'])
|
|
514
|
+
* // Matches the multi-word command 'config set' and returns: { command: ..., options: {}, args: ['theme'] }
|
|
463
515
|
*/
|
|
464
516
|
export function processConfig(config, args) {
|
|
465
517
|
const parsedFlags = parseFlags(args);
|
|
466
518
|
const commandArgs = parsedFlags._ || [];
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
if (!commandName) {
|
|
519
|
+
const firstCommandArg = commandArgs[0];
|
|
520
|
+
if (!firstCommandArg) {
|
|
470
521
|
if (parsedFlags.version === true && config.meta?.version) {
|
|
471
522
|
// Show version and exit successfully
|
|
472
523
|
console.log(config.meta.version);
|
|
@@ -487,12 +538,20 @@ export function processConfig(config, args) {
|
|
|
487
538
|
throw new ZodlineError('No command specified.');
|
|
488
539
|
}
|
|
489
540
|
}
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
541
|
+
// Find the command
|
|
542
|
+
const commandName = findCommandName(Object.keys(config.commands), commandArgs);
|
|
543
|
+
const command = commandName && config.commands[commandName];
|
|
544
|
+
if (!commandName || !command) {
|
|
545
|
+
// Show only the commands of the group (e.g. `config` for `config set`) if there is one
|
|
546
|
+
const groupCommands = findCommandsInGroup(config.commands, firstCommandArg);
|
|
547
|
+
const isGroup = Object.keys(groupCommands).length > 0;
|
|
548
|
+
displayHelp(isGroup ? groupCommands : config.commands, config.meta);
|
|
549
|
+
if (isGroup && parsedFlags.help === true) {
|
|
550
|
+
process.exit(0);
|
|
551
|
+
}
|
|
552
|
+
throw new ZodlineError(`Unknown command: \x1b[36m${commandArgs.join(' ')}\x1b[0m`);
|
|
494
553
|
}
|
|
495
|
-
const remainingArgs = commandArgs.slice(
|
|
554
|
+
const remainingArgs = commandArgs.slice(commandName.split(' ').length);
|
|
496
555
|
// Check for help flag for the specific command
|
|
497
556
|
if (parsedFlags.help === true) {
|
|
498
557
|
displayCommandHelp(commandName, command, config.meta);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export interface OptionsDefinition<T extends z.ZodObject<any> = z.ZodObject<any>
|
|
|
8
8
|
}
|
|
9
9
|
export interface CommandDefinition<TOptions extends z.ZodObject<any> = z.ZodObject<any>, TArgs extends z.ZodType | undefined = undefined> {
|
|
10
10
|
description?: string;
|
|
11
|
+
examples?: string[];
|
|
11
12
|
options?: OptionsDefinition<TOptions>;
|
|
12
13
|
args?: TArgs;
|
|
13
14
|
action: (options: TOptions extends z.ZodObject<any> ? z.infer<TOptions> : {}, args: TArgs extends z.ZodType ? z.infer<TArgs> : undefined) => void | Promise<void>;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,qBAAa,YAAa,SAAQ,KAAK;gBACzB,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC;IAC9E,MAAM,EAAE,CAAC,CAAC;IACV,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CAC9C;AAED,MAAM,WAAW,iBAAiB,CAChC,QAAQ,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EACpD,KAAK,SAAS,CAAC,CAAC,OAAO,GAAG,SAAS,GAAG,SAAS;IAE/C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,CACN,OAAO,EAAE,QAAQ,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,EACnE,IAAI,EAAE,KAAK,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,SAAS,KACvD,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY,CAAC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE;IAC9F,IAAI,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,QAAQ,EAAE,SAAS,CAAC;IACpB,cAAc,CAAC,EAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,aAAa,CAAC,QAAQ,SAAS,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC;IACvG,OAAO,EAAE,QAAQ,CAAC;IAClB,OAAO,EAAE,QAAQ,SAAS,iBAAiB,CAAC,MAAM,QAAQ,EAAE,GAAG,CAAC,GAC5D,QAAQ,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAC/B,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GACjB,EAAE,GACJ,GAAG,CAAC;IACR,IAAI,EAAE,QAAQ,SAAS,iBAAiB,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,GACtD,KAAK,SAAS,CAAC,CAAC,OAAO,GACrB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GACd,SAAS,GACX,GAAG,CAAC;CACT"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,qBAAa,YAAa,SAAQ,KAAK;gBACzB,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC;IAC9E,MAAM,EAAE,CAAC,CAAC;IACV,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CAC9C;AAED,MAAM,WAAW,iBAAiB,CAChC,QAAQ,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EACpD,KAAK,SAAS,CAAC,CAAC,OAAO,GAAG,SAAS,GAAG,SAAS;IAE/C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,CACN,OAAO,EAAE,QAAQ,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,EACnE,IAAI,EAAE,KAAK,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,SAAS,KACvD,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY,CAAC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE;IAC9F,IAAI,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,QAAQ,EAAE,SAAS,CAAC;IACpB,cAAc,CAAC,EAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,aAAa,CAAC,QAAQ,SAAS,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC;IACvG,OAAO,EAAE,QAAQ,CAAC;IAClB,OAAO,EAAE,QAAQ,SAAS,iBAAiB,CAAC,MAAM,QAAQ,EAAE,GAAG,CAAC,GAC5D,QAAQ,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAC/B,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GACjB,EAAE,GACJ,GAAG,CAAC;IACR,IAAI,EAAE,QAAQ,SAAS,iBAAiB,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,GACtD,KAAK,SAAS,CAAC,CAAC,OAAO,GACrB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GACd,SAAS,GACX,GAAG,CAAC;CACT"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zodline",
|
|
3
|
-
"version": "0.3.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.3.1",
|
|
4
|
+
"description": "Type-safe CLI argument parser powered by Zod schemas. Zero dependencies, inferred TypeScript types, and automatic help generation.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
8
|
-
"bin": {
|
|
9
|
-
"zodline-example": "./example.js"
|
|
10
|
-
},
|
|
11
8
|
"files": [
|
|
12
9
|
"dist"
|
|
13
10
|
],
|
|
@@ -17,6 +14,7 @@
|
|
|
17
14
|
"types": "./dist/index.d.ts"
|
|
18
15
|
}
|
|
19
16
|
},
|
|
17
|
+
"homepage": "https://zodline.dev",
|
|
20
18
|
"repository": {
|
|
21
19
|
"type": "git",
|
|
22
20
|
"url": "git+https://github.com/capawesome-team/zodline.git"
|
|
@@ -34,8 +32,10 @@
|
|
|
34
32
|
"test:run": "vitest run",
|
|
35
33
|
"test:ui": "vitest --ui",
|
|
36
34
|
"test:coverage": "vitest run --coverage",
|
|
37
|
-
"
|
|
38
|
-
"
|
|
35
|
+
"docs:dev": "blume dev",
|
|
36
|
+
"docs:build": "blume build && rm -rf .blume-dist && cp -R dist .blume-dist",
|
|
37
|
+
"docs:preview": "blume preview",
|
|
38
|
+
"docs:check": "blume check",
|
|
39
39
|
"prepublishOnly": "npm run clean && npm run build"
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
@@ -45,7 +45,8 @@
|
|
|
45
45
|
"@types/node": "^20.19.43",
|
|
46
46
|
"@vitest/coverage-v8": "^3.2.7",
|
|
47
47
|
"@vitest/ui": "^3.2.7",
|
|
48
|
-
"
|
|
48
|
+
"astro": "^7.1.6",
|
|
49
|
+
"blume": "^1.3.1",
|
|
49
50
|
"prettier": "^3.9.6",
|
|
50
51
|
"rimraf": "^5.0.5",
|
|
51
52
|
"typescript": "^5.9.3",
|
|
@@ -58,9 +59,22 @@
|
|
|
58
59
|
"keywords": [
|
|
59
60
|
"cli",
|
|
60
61
|
"parser",
|
|
62
|
+
"cli-parser",
|
|
63
|
+
"command-line",
|
|
64
|
+
"command-line-parser",
|
|
65
|
+
"argv",
|
|
66
|
+
"arguments",
|
|
67
|
+
"args",
|
|
68
|
+
"flags",
|
|
69
|
+
"options",
|
|
61
70
|
"zod",
|
|
71
|
+
"zod-cli",
|
|
62
72
|
"typescript",
|
|
63
|
-
"
|
|
73
|
+
"type-safe",
|
|
74
|
+
"validation",
|
|
75
|
+
"esm",
|
|
76
|
+
"commander-alternative",
|
|
77
|
+
"yargs-alternative"
|
|
64
78
|
],
|
|
65
79
|
"author": "Robin Genz <mail@robingenz.dev>",
|
|
66
80
|
"license": "MIT"
|
package/example.js
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { z } from 'zod';
|
|
3
|
-
import { defineConfig, defineCommand, defineOptions, processConfig } from './dist/index.js';
|
|
4
|
-
|
|
5
|
-
// Define a simple command to greet someone
|
|
6
|
-
const greetCommand = defineCommand({
|
|
7
|
-
description: 'Greet someone',
|
|
8
|
-
options: defineOptions(
|
|
9
|
-
z.object({
|
|
10
|
-
name: z.string().describe('Name to greet'),
|
|
11
|
-
loud: z.boolean().default(false).describe('Use uppercase'),
|
|
12
|
-
}),
|
|
13
|
-
{ n: 'name', l: 'loud' } // Short aliases
|
|
14
|
-
),
|
|
15
|
-
action: async (options) => {
|
|
16
|
-
const greeting = `Hello, ${options.name}!`;
|
|
17
|
-
console.log(options.loud ? greeting.toUpperCase() : greeting);
|
|
18
|
-
},
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
// Define a command that copies a file
|
|
22
|
-
const copyCommand = defineCommand({
|
|
23
|
-
description: 'Copy a file to another location',
|
|
24
|
-
args: z.tuple([
|
|
25
|
-
z.string().describe('Source file'),
|
|
26
|
-
z.string().describe('Destination file'),
|
|
27
|
-
]),
|
|
28
|
-
options: defineOptions(
|
|
29
|
-
z.object({
|
|
30
|
-
verbose: z.boolean().default(false).describe('Show detailed output'),
|
|
31
|
-
}),
|
|
32
|
-
{ v: 'verbose' }
|
|
33
|
-
),
|
|
34
|
-
action: async (options, args) => {
|
|
35
|
-
const [source, dest] = args;
|
|
36
|
-
|
|
37
|
-
if (options.verbose) {
|
|
38
|
-
console.log(`Copying ${source} to ${dest}...`);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
console.log(`โ
Copied ${source} to ${dest}`);
|
|
42
|
-
},
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
// Configure the CLI
|
|
46
|
-
const config = defineConfig({
|
|
47
|
-
meta: {
|
|
48
|
-
name: 'simple-cli',
|
|
49
|
-
version: '1.0.0',
|
|
50
|
-
description: 'A simple example CLI',
|
|
51
|
-
},
|
|
52
|
-
commands: {
|
|
53
|
-
greet: greetCommand,
|
|
54
|
-
copy: copyCommand,
|
|
55
|
-
},
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
// Process and run
|
|
59
|
-
try {
|
|
60
|
-
const result = processConfig(config, process.argv.slice(2));
|
|
61
|
-
await result.command.action(result.options, result.args);
|
|
62
|
-
} catch (error) {
|
|
63
|
-
console.error('Error:', error.message);
|
|
64
|
-
process.exit(1);
|
|
65
|
-
}
|