feature complete

This commit is contained in:
Vomitblood 2024-03-24 23:57:34 +08:00
parent 2893bdfe62
commit f19fdadb78

View file

@ -31,6 +31,29 @@ const GENERATIONS: [(&str, (u32, u32)); 8] = [
("8", (810, 898)), ("8", (810, 898)),
]; ];
fn validate_files() -> std::io::Result<()> {
let colorscripts_dir = COLORSCRIPTS_DIR;
let pokemon_data_path = POKEMON_DATA_PATH;
if !colorscripts_dir.exists() {
println!(
"Colorscripts directory not found at {}",
colorscripts_dir.display()
);
std::process::exit(1);
}
if !pokemon_data_path.exists() {
println!(
"Pokemon data file not found at {}",
pokemon_data_path.display()
);
std::process::exit(1);
}
Ok(())
}
fn print_file(filepath: &std::path::Path) -> std::io::Result<()> { fn print_file(filepath: &std::path::Path) -> std::io::Result<()> {
let file = std::fs::File::open(filepath)?; let file = std::fs::File::open(filepath)?;
let reader = std::io::BufReader::new(file); let reader = std::io::BufReader::new(file);
@ -60,7 +83,10 @@ fn list_pokemon_names() -> std::io::Result<()> {
} }
} }
println!("-------------------");
println!("Total: {} Pokémons", count); println!("Total: {} Pokémons", count);
println!("Use the --name flag to view a specific Pokémon");
println!("Tip: Use `grep` to search for a specific Pokémon");
Ok(()) Ok(())
} }
@ -187,16 +213,10 @@ fn show_random_pokemon(
Ok(()) Ok(())
} }
// fn main() {
// // println!("{}", PROGRAM.display());
// // println!("{}", PROGRAM_DIR.display());
// // println!("{}", COLORSCRIPTS_DIR.display());
// // show_pokemon_by_name("eevee", false, false, false, Some("gmax")).unwrap();
// show_random_pokemon("7-8", true, false, false);
// list_pokemon_names();
// }
fn main() { fn main() {
// validate files first
validate_files().unwrap();
let matches = clap::App::new("pokemon-colorscripts") let matches = clap::App::new("pokemon-colorscripts")
.about("CLI utility to print out unicode image of a pokemon in your shell") .about("CLI utility to print out unicode image of a pokemon in your shell")
.arg( .arg(
@ -253,7 +273,7 @@ fn main() {
let shiny = matches.is_present("shiny"); let shiny = matches.is_present("shiny");
let big = matches.is_present("big"); let big = matches.is_present("big");
let form = matches.value_of("form"); let form = matches.value_of("form");
show_pokemon_by_name(name, no_title, shiny, big, form).unwrap(); show_pokemon_by_name(name, !no_title, shiny, big, form).unwrap();
} else if matches.is_present("random") { } else if matches.is_present("random") {
let random = matches.value_of("random").unwrap_or(""); let random = matches.value_of("random").unwrap_or("");
let no_title = matches.is_present("no-title"); let no_title = matches.is_present("no-title");
@ -263,8 +283,12 @@ fn main() {
println!("--form flag unexpected with --random"); println!("--form flag unexpected with --random");
std::process::exit(1); std::process::exit(1);
} }
show_random_pokemon(random, no_title, shiny, big).unwrap(); show_random_pokemon(random, !no_title, shiny, big).unwrap();
} else { } else {
show_random_pokemon("", true, false, false).unwrap(); // show random pokemon by default with support for other flags
let no_title = matches.is_present("no-title");
let shiny = matches.is_present("shiny");
let big = matches.is_present("big");
show_random_pokemon("", !no_title, shiny, big).unwrap();
} }
} }