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;
}
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 let Some(cur_hash) = cur_hash {
if cur_hash == new_hash {
return;
}
}
#[allow(clippy::manual_assert)]
if std::env::var("CI").is_ok() {
panic!("re_types_builder's fbs definitions and generated code are out-of-sync!");
}
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);
}