[r2r_common] Add get_env_hash() to generate an env var dependent hash

This commit is contained in:
aeon 2022-11-25 02:35:58 +08:00
parent 6fbcfd1403
commit c136d1400f
2 changed files with 29 additions and 5 deletions

View File

@ -13,3 +13,4 @@ documentation = "https://sequenceplanner.github.io/r2r/"
[dependencies]
bindgen = "0.63.0"
itertools = "0.10.5"
sha2 = "0.10.6"

View File

@ -1,16 +1,39 @@
use itertools::Itertools;
use sha2::{Digest, Sha256};
use std::collections::HashMap;
use std::env;
use std::fs::{self, File};
use std::io::Read;
use std::path::Path;
const WATCHED_ENV_VARS: &[&str] = &[
"AMENT_PREFIX_PATH",
"CMAKE_INCLUDE_DIRS",
"CMAKE_LIBRARIES",
"CMAKE_IDL_PACKAGES",
"IDL_PACKAGE_FILTER",
];
pub fn get_env_hash() -> String {
let mut hasher = Sha256::new();
for var in WATCHED_ENV_VARS {
hasher.update(var.as_bytes());
hasher.update("=");
if let Ok(value) = env::var(var) {
hasher.update(value);
}
hasher.update("\n");
}
let hash = hasher.finalize();
format!("{:x}", hash)
}
pub fn print_cargo_watches() {
println!("cargo:rerun-if-env-changed=AMENT_PREFIX_PATH");
println!("cargo:rerun-if-env-changed=CMAKE_INCLUDE_DIRS");
println!("cargo:rerun-if-env-changed=CMAKE_LIBRARIES");
println!("cargo:rerun-if-env-changed=CMAKE_IDL_PACKAGES");
println!("cargo:rerun-if-env-changed=IDL_PACKAGE_FILTER");
for var in WATCHED_ENV_VARS {
println!("cargo:rerun-if-env-changed={}", var);
}
}
pub fn setup_bindgen_builder() -> bindgen::Builder {