examples: add two examples
vi did:web:vt3e.cat
Sun, 10 May 2026 01:52:21 +0100
2 files changed,
54 insertions(+),
0 deletions(-)
A
examples/context.ts
@@ -0,0 +1,24 @@
+import { Command } from "../src/index"; + +const app = new Command() + .setName("app") + .setDescription("app to demonstrate context inference") + .addFlag("verbose", { short: "v", description: "enable verbose output" }) + .addStringArgument("env", { required: true, short: "e" }) + .addNumberArgument("port", { short: "p", required: false }) + .addChoiceArgument("mode", { + choices: ["development", "production"] as const, + required: true, + }) + .addPositional("input", { required: true }) + .setAction((ctx) => { + console.log("context:", ctx); + + console.log(`verbose: ${ctx.verbose}`); // (property) verbose: boolean + console.log(`environment: ${ctx.env}`); // (property) env: string + console.log(`port: ${ctx.port}`); // (property) port: number | undefined + console.log(`mode: ${ctx.mode}`); // (property) mode: "development" | "production" + console.log(`input: ${ctx.input}`); // (property) input: string + }); + +app.parse(process.argv.slice(2)).catch(console.error);
A
examples/subcommand.ts
@@ -0,0 +1,30 @@
+import { Command } from "../src/index"; + +const serveCmd = new Command() + .setName("serve") + .setDescription("start the server") + .addNumberArgument("port", { short: "p", required: true }) + .setAction((ctx) => { + console.log(`port: ${ctx.port}`); + }); + +const buildCmd = new Command() + .setName("build") + .setDescription("build the project") + .addFlag("prod", { short: "p", description: "build for production" }) + .setAction((ctx) => { + console.log(`production: ${ctx.prod}`); + }); + +const cli = new Command() + .setName("cli") + .setDescription("a CLI with subcommands") + .addFlag("debug", { short: "d" }) + .addSubcommand(serveCmd) + .addSubcommand(buildCmd) + .setAction((ctx) => { + if (ctx.debug) console.log("debug mode enabled"); + console.log("no subcommand provided. Use 'serve' or 'build'."); + }); + +cli.parse(process.argv.slice(2)).catch(console.error);