use std::collections::hash_map::DefaultHasher; use std::env; use std::hash::Hasher; use std::path::PathBuf; use std::process::Command; fn main() { set_schema_version_env_var(); let rev = Command::new("git") .arg("rev-parse") .arg("HEAD") .output() .ok() .map(|s| s.stdout) .and_then(|s| String::from_utf8(s).ok()); if let Some(rev) = rev { if rev.len() >= 9 { println!("cargo:rustc-env=WBG_VERSION={}", &rev[..9]); } } } fn set_schema_version_env_var() { let cargo_manifest_dir = env::var("CARGO_MANIFEST_DIR").expect( "The `CARGO_MANIFEST_DIR` environment variable is needed to locate the schema file", ); let schema_file = PathBuf::from(cargo_manifest_dir).join("src/lib.rs"); let schema_file = std::fs::read(schema_file).unwrap(); let mut hasher = DefaultHasher::new(); hasher.write(&schema_file); println!("cargo:rustc-env=SCHEMA_FILE_HASH={}", hasher.finish()); }