39 lines
1.0 KiB
TypeScript
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()),
|
|
});
|