use std::{
fs,
io::{BufRead, BufReader, Write},
path::PathBuf,
};
fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("cargo:rerun-if-changed=modules/units/currencies.nbt");
let currencies_file = BufReader::new(fs::File::open("modules/units/currencies.nbt")?);
let mut currency_names = Vec::new();
for line in currencies_file.lines() {
let line = line?;
let line = line.trim();
if line.starts_with("@aliases(") {
let alias_str = line.split('(').nth(1).unwrap().split(')').next().unwrap();
currency_names.extend(
alias_str
.split(',')
.map(|s| s.split(':').next().unwrap().trim().to_owned()),
);
} else if line.starts_with("unit ") {
let name = line
.split(' ') .nth(1)
.unwrap()
.split(':') .next()
.unwrap()
.trim();
currency_names.push(name.to_owned());
}
}
currency_names.sort();
let out_file = PathBuf::from(std::env::var("OUT_DIR")?).join("currencies.rs");
let mut out_file = fs::File::create(&out_file)?;
write!(out_file, "{currency_names:?}")?;
Ok(())
}