Files
suaveplan/packages/devtools/tooling/cli/src/parser/parser.schemas.ts
2026-05-27 23:29:53 +01:00

39 lines
1.0 KiB
TypeScript

import z from "zod";
export const OptionTypeSchema = z.enum([
"string",
"boolean",
"number",
"array",
]);
export const OptionConfigSchema = z.object({
type: OptionTypeSchema.optional(),
short: z.string().optional(),
description: z.string().optional(),
default: z.unknown().optional(),
required: z.boolean().optional(),
choices: z.array(z.string()).optional(),
});
export const ArgumentConfigSchema = z.object({
name: z.string(),
description: z.string().optional(),
required: z.boolean(),
variadic: z.boolean(),
default: z.unknown().optional(),
});
export const ParserConfigSchema = z.object({
options: z.record(z.string(), OptionConfigSchema).optional(),
arguments: z.array(ArgumentConfigSchema).optional(),
allowUnknown: z.boolean().optional(),
stopEarly: z.boolean().optional(),
});
export const ParsedArgsSchema = z.object({
options: z.record(z.string(), z.unknown()),
positionals: z.record(z.string(), z.unknown()),
rest: z.array(z.string()),
});