1use clap::{Parser, ValueEnum};
2
3#[derive(Parser, Debug)]
4#[command(
5 name = "retch",
6 version,
7 about = "A fast, feature-rich system information fetcher"
8)]
9pub struct Cli {
10 #[arg(short, long, value_enum, default_value = "long")]
12 pub mode: OutputMode,
13
14 #[arg(short, long)]
16 pub theme: Option<String>,
17
18 #[arg(short, long)]
20 pub config: Option<String>,
21
22 #[arg(long)]
24 pub no_logo: bool,
25
26 #[arg(long)]
28 pub ascii_only: bool,
29
30 #[arg(long)]
32 pub short: bool,
33
34 #[arg(long)]
36 pub long: bool,
37
38 #[arg(long)]
40 pub list_themes: bool,
41
42 #[arg(long)]
44 pub print_theme_template: bool,
45
46 #[arg(long)]
48 pub list_distros: bool,
49
50 #[arg(long)]
52 pub print_logos: bool,
53
54 #[arg(long)]
56 pub generate_config: bool,
57
58 #[arg(long, value_name = "PATH")]
60 pub write_config: Option<Option<String>>,
61
62 #[arg(long)]
64 pub merge_config: bool,
65
66 #[arg(long, value_delimiter = ',')]
68 pub fields: Option<Vec<String>>,
69}
70
71#[derive(ValueEnum, Clone, Debug, PartialEq)]
72pub enum OutputMode {
73 Short,
74 Long,
75 Custom,
76}