// https://github.com/longbridgeapp/rust-i18n/blob/v0.1.6/crates/support/src/lib.rs#L9 fn workdir() -> Option { if let Ok(cargo_manifest_dir) = std::env::var("CARGO_MANIFEST_DIR") { return Some(cargo_manifest_dir); } let dest = std::env::var("OUT_DIR"); if dest.is_err() { return None; } let dest = dest.unwrap(); let seperator = regex::Regex::new(r"(/target/(.+?)/build/)|(\\target\\(.+?)\\build\\)") .expect("Invalid regex"); let parts = seperator.split(dest.as_str()).collect::>(); if parts.len() >= 2 { return Some(parts[0].to_string()); } None } fn main() { let workdir = workdir().unwrap_or("./".to_string()); let locale_path = format!("{workdir}/**/locales/**/*"); if let Ok(globs) = globwalk::glob(locale_path) { for entry in globs { if let Err(e) = entry { println!("cargo:i18n-error={}", e); continue; } let entry = entry.unwrap().into_path(); println!("cargo:rerun-if-changed={}", entry.display()); } } }