use std::path::Path;
use xshell::{cmd, Shell};
use re_build_tools::{
compute_file_hash, is_tracked_env_var_set, read_versioning_hash, write_versioning_hash,
};
const SOURCE_HASH_PATH: &str = "./source_hash.txt";
const FBS_REFLECTION_DEFINITION_PATH: &str = "./definitions/reflection.fbs";
fn main() {
if cfg!(target_os = "windows") {
return;
}
if !is_tracked_env_var_set("IS_IN_RERUN_WORKSPACE") {
return;
}
if is_tracked_env_var_set("RERUN_IS_PUBLISHING") {
return;
}
if !Path::new(SOURCE_HASH_PATH).exists() {
return;
}
let cur_hash = read_versioning_hash(SOURCE_HASH_PATH);
let new_hash = compute_file_hash(FBS_REFLECTION_DEFINITION_PATH);
eprintln!("cur_hash: {cur_hash:?}");
eprintln!("new_hash: {new_hash:?}");
if cur_hash.is_none() || cur_hash.as_ref() == Some(&new_hash) {
return;
}
let sh = Shell::new().unwrap();
cmd!(
sh,
"flatc -o src/ --rust --gen-onefile --filename-suffix '' {FBS_REFLECTION_DEFINITION_PATH}"
)
.run()
.unwrap();
cmd!(sh, "cargo fmt").run().ok();
write_versioning_hash(SOURCE_HASH_PATH, new_hash);
}