1use clap::{Parser, ValueEnum};
2use std::path::PathBuf;
3
4#[derive(Parser)]
5#[command(name = "agent-image-diff", version, about = "Structured image diff with JSON output for agent workflows")]
6pub struct Cli {
7 pub baseline: PathBuf,
9
10 pub candidate: PathBuf,
12
13 #[arg(short = 'f', long, default_value = "json", value_enum)]
15 pub format: OutputFormat,
16
17 #[arg(short = 'o', long = "output")]
19 pub output: Option<PathBuf>,
20
21 #[arg(short = 't', long, default_value = "0.1")]
23 pub threshold: f64,
24
25 #[arg(long, default_value = "true")]
27 pub detect_antialias: bool,
28
29 #[arg(long, default_value = "25")]
31 pub min_region_size: u32,
32
33 #[arg(long, default_value = "8")]
35 pub connectivity: u8,
36
37 #[arg(long, default_value = "25")]
39 pub denoise: u32,
40
41 #[arg(long, default_value = "0")]
43 pub dilate: u32,
44
45 #[arg(long, default_value = "50")]
47 pub merge_distance: u32,
48
49 #[arg(long, default_value = "diff", value_enum)]
51 pub exit_code: ExitCodeMode,
52
53 #[arg(short = 'v', long)]
55 pub verbose: bool,
56
57 #[arg(long)]
59 pub pretty: bool,
60
61 #[arg(short = 'q', long)]
63 pub quiet: bool,
64}
65
66#[derive(ValueEnum, Clone)]
67pub enum OutputFormat {
68 Json,
69 Image,
70 Summary,
71}
72
73#[derive(ValueEnum, Clone)]
74pub enum ExitCodeMode {
75 Diff,
77 AlwaysZero,
79}