mod args;
use args::KecoArgs;
use clap::Parser;
use std::io;
use std::io::Write;
fn main() {
let args = KecoArgs::parse();
let color = args.color;
let text = args.text;
let stdout = io::stdout();
if color.len() != 6 {
eprintln!("Please provide a hex code with valid length.");
std::process::exit(1);
}
let r = match u8::from_str_radix(&color[0..2], 16) {
Ok(val) => val,
Err(err) => {
eprintln!("Please provide a valid hex code: {}.", err);
std::process::exit(1);
}
};
let g = match u8::from_str_radix(&color[2..4], 16) {
Ok(val) => val,
Err(err) => {
eprintln!("Please provide a valid hex code: {}.", err);
std::process::exit(1);
}
};
let b = match u8::from_str_radix(&color[4..6], 16) {
Ok(val) => val,
Err(err) => {
eprintln!("Please provide a valid hex code: {}.", err);
std::process::exit(1);
}
};
let mut handle = stdout.lock();
if let Err(err) = writeln!(
handle,
"\x1b[38;2;{};{};{}m{}\x1b[0m",
r,
g,
b,
text.join(" ")
) {
eprintln!("Write error: {}", err);
std::process::exit(1);
}
}