Skip to main content

colored/
colored.rs

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    // Corregido: .fg_black() y .fg_white() para permitir encadenar .bold().paint()
155    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}