1use simpleargumentsparser::{parse_cli, CLI};
2use std::process;
3
4fn main() {
5 let cli = parse_cli();
6
7 if cli.no_args {
8 exit("Arguments needed. Try: --showcase or --help");
9 }
10
11 if cli.s.contains_key("h") || cli.c.contains_key("help") {
12 exit(&get_help_menu(&cli));
13 }
14
15 if cli.c.contains_key("version") {
16 exit("V1.0.0");
17 }
18
19 if cli.c.contains_key("showcase") {
20 show_color_showcase(&cli);
21 }
22 if cli.c.contains_key("styles") {
23 show_styles(&cli);
24 }
25 if cli.c.contains_key("colors") {
26 show_colors(&cli);
27 }
28 if cli.c.contains_key("bright") {
29 show_bright_colors(&cli);
30 }
31 if cli.c.contains_key("backgrounds") {
32 show_backgrounds(&cli);
33 }
34 if cli.c.contains_key("combinations") {
35 show_combinations(&cli);
36 }
37 if cli.c.contains_key("all") {
38 show_all(&cli);
39 }
40}
41
42fn exit(msg: &str) {
43 println!("{}", msg);
44 process::exit(0);
45}
46
47fn get_help_menu(cli: &CLI) -> String {
48 format!(
49 "\n{}\n{}\n\n{}\n cargo run -- [options]\n\n{}\n {} Show complete color showcase\n {} Show text styles (bold, italic, etc.)\n {} Show basic colors\n {} Show bright colors\n {} Show background colors\n {} Show style combinations\n {} Show everything\n {} Show this help menu\n {} Show version\n\n{}\n {} cargo run -- --showcase\n {} cargo run -- --colors --bright\n {} cargo run -- --all\n",
50 cli.color.bold().cyan("CLI Color System Showcase"),
51 cli.color.dim().paint("===================================================="),
52 cli.color.bold().paint("Usage:"),
53 cli.color.bold().paint("Options:"),
54 cli.color.green("--showcase"),
55 cli.color.green("--styles"),
56 cli.color.green("--colors"),
57 cli.color.green("--bright"),
58 cli.color.green("--backgrounds"),
59 cli.color.green("--combinations"),
60 cli.color.green("--all"),
61 cli.color.green("-h, --help"),
62 cli.color.green("--version"),
63 cli.color.bold().paint("Examples:"),
64 cli.color.dim().paint("$"),
65 cli.color.dim().paint("$"),
66 cli.color.dim().paint("$")
67 )
68}
69
70fn show_styles(cli: &CLI) {
71 println!("\n{}\n", cli.color.bold().underline().paint("TEXT STYLES"));
72 println!("{} - Use .bold()", cli.color.bold().paint("Bold text"));
73 println!("{} - Use .dim()", cli.color.dim().paint("Dim text"));
74 println!("{} - Use .italic()", cli.color.italic().paint("Italic text"));
75 println!("{} - Use .underline()", cli.color.underline().paint("Underlined text"));
76 println!("{} - Use .blink()", cli.color.blink().paint("Blinking text"));
77 println!("{} - Use .invert()", cli.color.invert().paint("Inverted text"));
78}
79
80fn show_colors(cli: &CLI) {
81 println!("\n{}\n", cli.color.bold().underline().paint("BASIC COLORS"));
82 println!("{} - Use .black()", cli.color.black("Black text"));
83 println!("{} - Use .red()", cli.color.red("Red text"));
84 println!("{} - Use .green()", cli.color.green("Green text"));
85 println!("{} - Use .yellow()", cli.color.yellow("Yellow text"));
86 println!("{} - Use .blue()", cli.color.blue("Blue text"));
87 println!("{} - Use .magenta()", cli.color.magenta("Magenta text"));
88 println!("{} - Use .cyan()", cli.color.cyan("Cyan text"));
89 println!("{} - Use .white()", cli.color.white("White text"));
90}
91
92fn show_bright_colors(cli: &CLI) {
93 println!("\n{}\n", cli.color.bold().underline().paint("BRIGHT COLORS"));
94 println!("{} - Use .bright_black()", cli.color.bright_black("Bright Black text"));
95 println!("{} - Use .bright_red()", cli.color.bright_red("Bright Red text"));
96 println!("{} - Use .bright_green()", cli.color.bright_green("Bright Green text"));
97 println!("{} - Use .bright_yellow()", cli.color.bright_yellow("Bright Yellow text"));
98 println!("{} - Use .bright_blue()", cli.color.bright_blue("Bright Blue text"));
99 println!("{} - Use .bright_magenta()", cli.color.bright_magenta("Bright Magenta text"));
100 println!("{} - Use .bright_cyan()", cli.color.bright_cyan("Bright Cyan text"));
101 println!("{} - Use .bright_white()", cli.color.bright_white("Bright White text"));
102}
103
104fn show_backgrounds(cli: &CLI) {
105 println!("\n{}\n", cli.color.bold().underline().paint("BACKGROUND COLORS"));
106 println!("{} - Use .bg_black().white()", cli.color.bg_black().white("Black background"));
107 println!("{} - Use .bg_red().white()", cli.color.bg_red().white("Red background"));
108 println!("{} - Use .bg_green().black()", cli.color.bg_green().black("Green background"));
109 println!("{} - Use .bg_yellow().black()", cli.color.bg_yellow().black("Yellow background"));
110 println!("{} - Use .bg_blue().white()", cli.color.bg_blue().white("Blue background"));
111 println!("{} - Use .bg_magenta().white()", cli.color.bg_magenta().white("Magenta background"));
112 println!("{} - Use .bg_cyan().black()", cli.color.bg_cyan().black("Cyan background"));
113 println!("{} - Use .bg_white().black()", cli.color.bg_white().black("White background"));
114}
115
116fn show_combinations(cli: &CLI) {
117 println!("\n{}\n", cli.color.bold().underline().paint("STYLE COMBINATIONS"));
118 println!("{} - Use .bold().red()", cli.color.bold().red("Bold Red"));
119 println!("{} - Use .italic().green()", cli.color.italic().green("Italic Green"));
120 println!("{} - Use .underline().yellow()", cli.color.underline().yellow("Underlined Yellow"));
121 println!("{} - Use .bold().italic().cyan()", cli.color.bold().italic().cyan("Bold Italic Cyan"));
122 println!("{} - Use .dim().underline().magenta()", cli.color.dim().underline().magenta("Dim Underlined Magenta"));
123 println!("{} - Use .bold().bg_red().white()", cli.color.bold().bg_red().white("Bold White on Red"));
124 println!("{} - Use .italic().bg_cyan().black()", cli.color.italic().bg_cyan().black("Italic Black on Cyan"));
125 println!("{} - Use .bold().underline().bright_green()", cli.color.bold().underline().bright_green("Bold Underlined Bright Green"));
126}
127
128fn show_color_showcase(cli: &CLI) {
129 println!("\n{}", cli.color.bold().bright_cyan("╔═══════════════════════════════════════╗"));
130 println!("{} {} {}", cli.color.bold().bright_cyan("║"), cli.color.bold().white("CLI COLOR SYSTEM SHOWCASE"), cli.color.bold().bright_cyan("║"));
131 println!("{}\n", cli.color.bold().bright_cyan("╚═══════════════════════════════════════╝"));
132
133 show_styles(cli);
134 show_colors(cli);
135 show_bright_colors(cli);
136 show_backgrounds(cli);
137 show_combinations(cli);
138
139 println!("\n{}\n", cli.color.bold().underline().paint("PRACTICAL EXAMPLES"));
140 println!("{} {} Operation completed successfully", cli.color.green("✓"), cli.color.bold().paint("Success:"));
141 println!("{} {} Something went wrong", cli.color.red("✗"), cli.color.bold().paint("Error:"));
142 println!("{} {} Please review your input", cli.color.yellow("⚠"), cli.color.bold().paint("Warning:"));
143 println!("{} {} Processing data...", cli.color.blue("ℹ"), cli.color.bold().paint("Info:"));
144 println!("{} {} Initialize configuration", cli.color.cyan("→"), cli.color.bold().paint("Step 1:"));
145 println!("{} {} {}", cli.color.magenta("♦"), cli.color.bold().paint("Debug:"), cli.color.dim().paint("Variable x = 42"));
146
147 println!("\n{}\n", cli.color.bold().underline().paint("CODE HIGHLIGHTING SIMULATION"));
148 println!("{}{} = {} + {};", cli.color.magenta("let "), cli.color.cyan("greeting"), cli.color.green("\"Hello\""), cli.color.green("\"World\""));
149 println!("{}{} {{", cli.color.magenta("fn "), cli.color.yellow("say_hello()"));
150 println!(" {}.{}({});", cli.color.blue("println!"), cli.color.yellow("format"), cli.color.cyan("greeting"));
151 println!("}}");
152
153 println!("\n{}\n", cli.color.bold().underline().paint("MESSAGE TYPES"));
154 println!("{} {}", cli.color.bg_green().fg_black().bold().paint(" SUCCESS "), cli.color.green("File saved successfully!"));
156 println!("{} {}", cli.color.bg_red().fg_white().bold().paint(" ERROR "), cli.color.red("Failed to connect to database"));
157 println!("{} {}", cli.color.bg_yellow().fg_black().bold().paint(" WARNING "), cli.color.yellow("Deprecated function used"));
158 println!("{} {}", cli.color.bg_blue().fg_white().bold().paint(" INFO "), cli.color.blue("Starting server on port 3000..."));
159
160 println!("\n{}", cli.color.dim().paint("------------------------------------------------------------"));
161 println!("{} {}", cli.color.italic().dim().paint("Tip: Chain multiple styles like"), cli.color.bold().yellow("cli.color.bold().yellow(\"text\")"));
162 println!("{}\n", cli.color.dim().paint("------------------------------------------------------------"));
163}
164
165fn show_all(cli: &CLI) {
166 show_color_showcase(cli);
167}