use std::fs;
use std::path::PathBuf;
fn main() {
let source = PathBuf::from("../app/backend/src/shared_types.rs");
let dest = PathBuf::from("src/shared_types.rs");
if source.exists() {
let content = fs::read_to_string(&source)
.expect("Failed to read shared_types.rs from ../app/backend/src/shared_types.rs");
let transformed = transform_shared_types(content);
fs::write(&dest, transformed).expect("Failed to write src/shared_types.rs");
println!("cargo:rerun-if-changed={}", source.display());
} else {
if !dest.exists() {
panic!(
"shared_types.rs not found. This file should be generated from the backend or included in the package."
);
}
}
}
fn transform_shared_types(content: String) -> String {
use regex::Regex;
let re_use = Regex::new(r"use [^;]+;\n").unwrap();
let content = re_use.replace_all(&content, "");
let re_derive = Regex::new(r"#\[derive\([^\]]+\)\]").unwrap();
let content =
re_derive.replace_all(&content, "#[derive(Serialize, Deserialize, Clone, Debug)]");
let header = "// This file is auto-generated by build.rs from ../app/backend/src/shared_types.rs\n// Do not edit manually - changes will be overwritten\n\n";
let imports = "use serde::{Deserialize, Serialize};\nuse chrono::{DateTime, Utc};\n\n";
format!("{}{}{}", header, imports, content)
}