|
| 1 | +use std::{collections::HashMap, env, error::Error, fs::File, io::Write, path::Path}; |
| 2 | +use toml::{map::Map, Table, Value}; |
| 3 | + |
| 4 | +fn main() -> Result<(), Box<dyn Error>> { |
| 5 | + println!("cargo::rerun-if-changed=crates/codegen/data/deprecated.toml"); |
| 6 | + println!("cargo::rerun-if-changed=build.rs"); |
| 7 | + let mut metadata: Table = |
| 8 | + toml::from_str(include_str!("./crates/codegen/data/deprecated.toml"))?; |
| 9 | + // Add version number |
| 10 | + let pkg_table = metadata.get_mut("package").unwrap().as_table_mut().unwrap(); |
| 11 | + let version = env!("CARGO_PKG_VERSION"); |
| 12 | + pkg_table.insert("version".into(), Value::String(version.into())); |
| 13 | + // Add deprecated objects |
| 14 | + let mut unique_ids: Vec<Value> = include_str!("./crates/codegen/data/uniques.txt") |
| 15 | + .split('\n') |
| 16 | + .filter(|id| !id.is_empty()) |
| 17 | + .map(|id| Value::String(id.into())) |
| 18 | + .collect(); |
| 19 | + let broken: HashMap<String, String> = |
| 20 | + serde_json::from_str(include_str!("./crates/codegen/data/broken.json"))?; |
| 21 | + for (key, _) in broken { |
| 22 | + if !key.starts_with("T_") { |
| 23 | + unique_ids.push(Value::String(key)); |
| 24 | + } |
| 25 | + } |
| 26 | + let mut tools = Map::new(); |
| 27 | + let mut csse = Map::new(); |
| 28 | + csse.insert("deprecated".into(), Value::Array(unique_ids)); |
| 29 | + tools.insert("csse".into(), Value::Table(csse)); |
| 30 | + metadata.insert("tools".into(), Value::Table(tools)); |
| 31 | + // Write metadata |
| 32 | + let mut file = File::create(Path::new("./Morrowind-metadata.toml"))?; |
| 33 | + file.write_all(metadata.to_string().as_bytes())?; |
| 34 | + Ok(()) |
| 35 | +} |
0 commit comments