zodline 0.2.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 CHANGED
@@ -2,23 +2,26 @@
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/zodline)](https://www.npmjs.com/package/zodline)
4
4
  [![npm downloads](https://img.shields.io/npm/dm/zodline)](https://www.npmjs.com/package/zodline)
5
- [![license](https://img.shields.io/npm/l/zodline)](https://github.com/robingenz/zodline/blob/main/LICENSE)
5
+ [![license](https://img.shields.io/npm/l/zodline)](https://github.com/capawesome-team/zodline/blob/main/LICENSE)
6
6
 
7
- A powerful CLI parser built with TypeScript and Zod for type-safe command-line interfaces.
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**: Built with TypeScript and Zod for runtime validation.
12
- - ๐Ÿ“‹ **Declarative**: Define commands, options, and arguments with simple schemas.
13
- - ๐Ÿ”„ **Flexible parsing**: Support for long flags, short flags, and flag clustering.
14
- - ๐Ÿ”€ **Smart conversion**: Automatic kebab-case to camelCase conversion.
15
- - ๐Ÿท๏ธ **Alias support**: Define short aliases for any option.
16
- - ๐Ÿ“ฆ **Array handling**: Automatic normalization of single values to arrays.
17
- - ๐ŸŽฏ **Default commands**: Set a default command to run when no command is specified.
18
- - โ“ **Help message**: Automatic help generation for commands and options.
19
- - โš ๏ธ **Error handling**: Clear, actionable error messages.
20
- - ๐Ÿš€ **Zero dependencies**: Only requires Zod as a peer dependency.
21
- - ๐Ÿ“ฆ **ESM support**: Modern ES modules with full TypeScript support.
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
- ## Migration from `@robingenz/zli`
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
- 2. Update import specifiers:
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 { defineConfig, defineCommand, defineOptions, processConfig } from 'zodline';
36
+ import { defineCommand, defineConfig, defineOptions, processConfig } from 'zodline';
61
37
 
62
- // Define a simple command
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
- // Process command line arguments
92
- try {
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
- ### Command Usage
67
+ Run it:
102
68
 
103
69
  ```bash
104
- # Show help
105
- my-cli --help
106
- my-cli greet --help
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
- # Run commands
109
- my-cli greet --name Alice
110
- my-cli greet -n Bob --loud
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
- # Run default command
113
- my-cli --name Alice
114
- my-cli greet --name Alice
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
- ### Advanced Features
106
+ ## Usage
118
107
 
119
- #### Default Commands
108
+ ### Commands
120
109
 
121
- You can specify a default command that will be executed when no command is provided:
110
+ Commands are a flat record of name to definition. Group related commands with a separator in the name:
122
111
 
123
- ```javascript
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
- build: buildCommand,
117
+ 'apps:list': appsListCommand,
118
+ 'apps:create': appsCreateCommand,
132
119
  },
133
- defaultCommand: startCommand,
134
120
  });
135
121
  ```
136
122
 
137
- With this configuration:
138
- - `my-app` will run the `startCommand`
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
- ```javascript
145
- const copyCommand = defineCommand({
146
- description: 'Copy a file',
147
- args: z.tuple([
148
- z.string().describe('Source file'),
149
- z.string().describe('Destination file'),
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
- #### Array Options
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
- ```javascript
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
- // Usage: --files file1.txt --files file2.txt
175
- // Single values are automatically converted to arrays
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
- #### Type Transformations
177
+ ### Arguments
179
178
 
180
- ```javascript
181
- const options = defineOptions(
182
- z.object({
183
- port: z.coerce.number().min(1).max(65535).describe('Port number'),
184
- count: z.coerce.number().min(1).describe('Count'),
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 Parsing
193
+ ### Flag syntax
190
194
 
191
- `zodline` supports various flag formats:
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
- ```bash
194
- # Long flags
195
- --verbose --name=value --port 3000
204
+ A flag whose next argument starts with `-`, or which is last, becomes `true`.
205
+
206
+ ### Help and version
196
207
 
197
- # Short flags
198
- -v -n value -p 3000
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
- # Flag clustering
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
- # Kebab-case conversion
204
- --my-option # becomes myOption in your code
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
- # Multiple values
207
- --file a.txt --file b.txt # becomes ['a.txt', 'b.txt']
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
- ### API Reference
238
+ Positional argument failures are currently thrown as a plain `Error` prefixed with `Argument validation failed:`.
211
239
 
212
- #### `defineOptions(schema, aliases?)`
240
+ ## API
213
241
 
214
- Define options for a command with optional aliases.
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
- - `schema`: Zod object schema defining the options
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
- #### `defineCommand(config)`
252
+ ## Comparison
220
253
 
221
- Define a command with options, arguments, and action.
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
- - `description`: Command description for help
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
- #### `defineConfig(config)`
264
+ ## Used By
229
265
 
230
- Define the CLI configuration.
266
+ - [Capawesome Team CLI](https://github.com/capawesome-team/cli) โ€” the Capawesome Cloud CLI to manage Live Updates and more.
231
267
 
232
- - `meta`: CLI metadata (name, version, description)
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
- #### `processConfig(config, args)`
270
+ ```bash
271
+ npm install
272
+ npm test
273
+ npm run build
274
+ npm run lint
275
+ ```
237
276
 
238
- Process command line arguments and return the result.
277
+ Bug reports and feature requests are welcome in the [issue tracker](https://github.com/capawesome-team/zodline/issues).
239
278
 
240
- - `config`: CLI configuration
241
- - `args`: Command line arguments (typically `process.argv.slice(2)`)
279
+ ## Migration
242
280
 
243
- Returns an object with:
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
- ## Used By
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
- - [Capawesome Team CLI](https://github.com/capawesome-team/cli) - The Capawesome Cloud CLI to manage Live Updates and more.
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>;
@@ -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"}
@@ -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,MAQD;IACC,OAAO,MAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,MAA+B;IAE/B,OAAO,MAAM,CAAC;AAChB,CAAC"}
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';
@@ -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;AAggBpG;;;;;;;;;;;;;GAaG;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,CA0C5C;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"}
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} ${commandNames}\x1b[0m\n`);
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\n`);
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
- // Find the command
468
- const commandName = commandArgs[0];
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
- const command = config.commands[commandName];
491
- if (!command) {
492
- displayHelp(config.commands, config.meta);
493
- throw new ZodlineError(`Unknown command: \x1b[36m${commandName}\x1b[0m`);
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(1);
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>;
@@ -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.2.0",
4
- "description": "A CLI parser built with Zod.",
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,12 +14,13 @@
17
14
  "types": "./dist/index.d.ts"
18
15
  }
19
16
  },
17
+ "homepage": "https://zodline.dev",
20
18
  "repository": {
21
19
  "type": "git",
22
- "url": "git+https://github.com/robingenz/zodline.git"
20
+ "url": "git+https://github.com/capawesome-team/zodline.git"
23
21
  },
24
22
  "bugs": {
25
- "url": "https://github.com/robingenz/zodline/issues"
23
+ "url": "https://github.com/capawesome-team/zodline/issues"
26
24
  },
27
25
  "scripts": {
28
26
  "build": "tsc",
@@ -34,23 +32,26 @@
34
32
  "test:run": "vitest run",
35
33
  "test:ui": "vitest --ui",
36
34
  "test:coverage": "vitest run --coverage",
37
- "release": "commit-and-tag-version",
38
- "release:dry-run": "npm run release -- --dry-run",
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": {
42
42
  "zod": "^4.0.0"
43
43
  },
44
44
  "devDependencies": {
45
- "@types/node": "^20.10.0",
46
- "@vitest/coverage-v8": "^3.2.4",
47
- "@vitest/ui": "^3.2.4",
48
- "commit-and-tag-version": "^12.5.2",
49
- "prettier": "^3.1.1",
45
+ "@types/node": "^20.19.43",
46
+ "@vitest/coverage-v8": "^3.2.7",
47
+ "@vitest/ui": "^3.2.7",
48
+ "astro": "^7.1.6",
49
+ "blume": "^1.3.1",
50
+ "prettier": "^3.9.6",
50
51
  "rimraf": "^5.0.5",
51
- "typescript": "^5.3.3",
52
- "vitest": "^3.2.4",
53
- "zod": "^4.0.17"
52
+ "typescript": "^5.9.3",
53
+ "vitest": "^3.2.7",
54
+ "zod": "^4.4.3"
54
55
  },
55
56
  "engines": {
56
57
  "node": ">=16.0.0"
@@ -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
- "command-line"
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
- }