use std::collections::BTreeMap;
use std::path::PathBuf;
#[path = "build_zip.rs"]
mod build_zip;
fn main() {
let manifest_dir = PathBuf::from(
std::env::var("CARGO_MANIFEST_DIR").expect("CARGO_MANIFEST_DIR not set by cargo"),
);
let scripts_root = manifest_dir.join("pasta_scripts");
assert!(
scripts_root.is_dir(),
"pasta_scripts source tree not found at {}",
scripts_root.display()
);
let mut files: BTreeMap<String, PathBuf> = BTreeMap::new();
let mut dirs: Vec<PathBuf> = Vec::new();
build_zip::collect(&scripts_root, &scripts_root, &mut files, &mut dirs);
println!("cargo:rerun-if-changed={}", scripts_root.display());
for dir in &dirs {
println!("cargo:rerun-if-changed={}", dir.display());
}
for abs in files.values() {
println!("cargo:rerun-if-changed={}", abs.display());
}
let zip_bytes = build_zip::build_deterministic_zip(&scripts_root);
let out_dir = PathBuf::from(std::env::var("OUT_DIR").expect("OUT_DIR not set by cargo"));
let zip_path = out_dir.join("pasta_scripts.zip");
std::fs::write(&zip_path, &zip_bytes)
.unwrap_or_else(|e| panic!("failed to write {}: {e}", zip_path.display()));
let digest = format!("{:x}", md5::compute(&zip_bytes));
println!("cargo:rustc-env=PASTA_SCRIPTS_MD5={digest}");
}