carddb_pack/
carddb_pack.rs

1use std::env;
2use std::fs;
3use std::path::PathBuf;
4
5use weiss_core::db::{CardDb, CardStatic};
6
7fn main() -> anyhow::Result<()> {
8    let args: Vec<String> = env::args().collect();
9    if args.len() < 3 {
10        eprintln!("Usage: carddb_pack <input_json> <output_wsdb>");
11        std::process::exit(1);
12    }
13    let input = PathBuf::from(&args[1]);
14    let output = PathBuf::from(&args[2]);
15    let bytes = fs::read(&input)?;
16
17    let db = match serde_json::from_slice::<CardDb>(&bytes) {
18        Ok(db) => CardDb::new(db.cards)?,
19        Err(_) => {
20            let cards: Vec<CardStatic> = serde_json::from_slice(&bytes)?;
21            CardDb::new(cards)?
22        }
23    };
24
25    let out = db.to_bytes_with_header()?;
26    fs::write(output, out)?;
27    Ok(())
28}