use std::path::Path;
fn main() {
emit_rerun_for_tree(Path::new("src/templates"));
emit_rerun_for_tree(Path::new("../blueprint"));
}
fn emit_rerun_for_tree(dir: &Path) {
let Ok(resolved) = dir.canonicalize() else {
return;
};
println!("cargo:rerun-if-changed={}", resolved.display());
let Ok(entries) = std::fs::read_dir(&resolved) else {
return;
};
for entry in entries.flatten() {
let path = entry.path();
if path.file_name().is_some_and(|name| {
matches!(
name.to_str(),
Some("node_modules") | Some("dist") | Some("lib") | Some(".git") | Some("target")
)
}) {
continue;
}
if path.is_dir() {
emit_rerun_for_tree(&path);
} else {
println!("cargo:rerun-if-changed={}", path.display());
}
}
}