1use clap::Parser;
2use std::path::PathBuf;
3
4#[derive(Parser, Debug)]
5#[command(name = "mold")]
6#[command(author, version, about = "JSON to TypeScript/Zod/Prisma generator", long_about = None)]
7pub struct Args {
8 #[arg(value_name = "FILE")]
9 pub file: PathBuf,
10
11 #[arg(short = 't', long, help = "Generate TypeScript interfaces")]
12 pub ts: bool,
13
14 #[arg(short = 'z', long, help = "Generate Zod schema")]
15 pub zod: bool,
16
17 #[arg(short = 'p', long, help = "Generate Prisma model")]
18 pub prisma: bool,
19
20 #[arg(short = 'a', long, help = "Generate all formats")]
21 pub all: bool,
22
23 #[arg(short = 'o', long, value_name = "DIR", help = "Output directory (default: stdout)")]
24 pub output: Option<PathBuf>,
25
26 #[arg(short = 'n', long, value_name = "NAME", help = "Root type name (default: inferred from filename)")]
27 pub name: Option<String>,
28
29 #[arg(long, help = "Keep nested objects inline (no extraction)")]
30 pub flat: bool,
31
32 #[arg(long = "export", help = "Add 'export' keyword to TypeScript interfaces")]
33 pub ts_export: bool,
34
35 #[arg(long = "readonly", help = "Add 'readonly' modifier to TypeScript fields")]
36 pub ts_readonly: bool,
37
38 #[arg(long = "strict", help = "Use .strict() for Zod object schemas")]
39 pub zod_strict: bool,
40}