aro/src/main.rs

22 lines
749 B
Rust
Raw Normal View History

2023-01-26 15:04:39 +01:00
#![feature(option_result_contains)]
2023-01-26 23:07:16 +01:00
use std::collections::HashMap;
2022-11-11 15:00:07 +01:00
2023-01-26 23:07:16 +01:00
use data::CardInfo;
use filter::SearchCard;
mod data;
mod filter;
mod parser;
2022-11-11 15:00:07 +01:00
fn main() -> Result<(), Box<dyn std::error::Error>> {
2023-01-26 15:04:39 +01:00
let cards = serde_json::from_reader::<_, CardInfo>(std::io::BufReader::new(std::fs::File::open("cards.json")?))?.data;
let search_cards: Vec<_> = cards.iter().map(SearchCard::from).collect();
let cards_by_id: HashMap<_, _> = cards.into_iter().map(|c| (c.id, c)).collect();
let raw_query = std::env::args().nth(1).unwrap();
2023-01-26 23:07:16 +01:00
let query = parser::parse_filters(&raw_query)?;
for c in search_cards.iter().filter(|card| query.iter().all(|q| q(card))) {
println!("{}", cards_by_id.get(&c.id).unwrap());
}
2023-01-26 23:07:16 +01:00
Ok(())
2022-10-05 17:57:01 +02:00
}