use clap::Parser; use scryfall_deser::get_all_lowercase_card_names; use scryfall_deser::get_local_cache_folder; use scryfall_deser::init_db; use scryfall_deser::update_db_with_file; use textdistance::str::damerau_levenshtein; #[derive(Parser, Debug)] #[command(version, about, long_about = None)] struct Args { #[arg(short, long)] update: bool, remainder: Vec, } fn main() { let args = Args::parse(); if args.update { init_db(); let mut path = get_local_cache_folder(); // TODO - actually download and update path.push("oracle-cards-20250814210711.json"); update_db_with_file(path); return; } let card_name = args.remainder; if card_name.is_empty() { panic!("You need to put some card text to search"); } let search_string = card_name.join(" "); //dbg!(&search_string); let cards = get_all_lowercase_card_names(); //dbg!(&cards); let mut matching_cards = Vec::new(); for card in cards { if card.contains(&search_string) { matching_cards.push(card.clone()); } } if matching_cards.is_empty() { // Do some distance checking stuff } //dbg!(matching_cards); }