use std::fs; use std::path::Path; fn main() { let migrations = Path::new("migrations"); println!("cargo:rerun-if-changed={}", migrations.display()); let mut count = 0u64; if let Ok(entries) = fs::read_dir(migrations) { for entry in entries.flatten() { let path = entry.path(); if path.extension().is_some_and(|extension| extension == "sql") { println!("cargo:rerun-if-changed={}", path.display()); count = count.wrapping_add(fs::metadata(&path).map(|m| m.len()).unwrap_or(0)); } } } let out_dir = std::env::var("OUT_DIR").unwrap(); let dest = Path::new(&out_dir).join("migration_stamp.rs"); fs::write( &dest, format!("// generated by build.rs\npub const MIGRATION_STAMP: u64 = {count};\n"), ) .unwrap(); }