use std::fs;
use indexmap::IndexMap;
use serde_json::Value;
fn main() {
let json = include_str!("sweecryptdb.json");
let map: IndexMap<String, Value> = serde_json::from_str(&json).unwrap();
let mut reversed = IndexMap::new();
for (k, v) in map.iter().rev() {
reversed.insert(v.clone(), k.clone());
}
let mut out = String::from("");
out.push_str("fn prebuilt_maps() -> (IndexMap<&'static str, &'static str>, IndexMap<&'static str, &'static str>) {\n");
out.push_str(" let normal = IndexMap::from([\n");
for (k, v) in &map {
let key = serde_json::to_string(k).unwrap();
let val = serde_json::to_string(v.as_str().unwrap()).unwrap();
out.push_str(&format!(" ({}, {}),\n", key, val));
}
out.push_str(" ]);\n");
out.push_str(" let reversed = IndexMap::from([\n");
for (k, v) in &reversed {
let key = serde_json::to_string(k.as_str().unwrap()).unwrap();
let val = serde_json::to_string(v).unwrap();
out.push_str(&format!(" ({}, {}),\n", key, val));
}
out.push_str(" ]);\n");
out.push_str(" (normal, reversed)\n}\n");
fs::write("src/generated.rs", out).unwrap();
println!("cargo:rerun-if-changed=sweecryptdb.json");
}