diff --git a/crates/codegen/runtime/generator/src/bindings/mod.rs b/crates/codegen/runtime/generator/src/bindings/mod.rs index b4f7401d4..ae29b4ef4 100644 --- a/crates/codegen/runtime/generator/src/bindings/mod.rs +++ b/crates/codegen/runtime/generator/src/bindings/mod.rs @@ -1,5 +1,6 @@ use anyhow::Result; use codegen_language_definition::model; +use infra_utils::codegen::CodegenFileSystem; use infra_utils::paths::PathExtensions; use serde::Serialize; @@ -10,11 +11,10 @@ pub struct BindingsModel { impl BindingsModel { pub fn from_language(language: &model::Language) -> Result { - let binding_rules_source = language.binding_rules_file.read_to_string()?; - println!( - "cargo:rerun-if-changed={}", - language.binding_rules_file.to_string_lossy() - ); + // We use `CodegenFileSystem` here to ensure the rules are rebuilt if the rules file changes + let binding_rules_dir = language.binding_rules_file.unwrap_parent(); + let mut fs = CodegenFileSystem::new(binding_rules_dir)?; + let binding_rules_source = fs.read_file(&language.binding_rules_file)?; Ok(Self { binding_rules_source,