From a6a649b0d35be98145d065c5fc8837b008ecb360 Mon Sep 17 00:00:00 2001 From: Mendy Man Date: Fri, 7 Mar 2025 09:40:51 -0500 Subject: [PATCH] Postprocess extra generated file --- src/generator.rs | 6 +++++- src/template.rs | 5 +++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/generator.rs b/src/generator.rs index d825ac4..52013e9 100644 --- a/src/generator.rs +++ b/src/generator.rs @@ -180,9 +180,13 @@ impl Generator<'_> { let out_file = BufWriter::new(File::create(&file_path)?); - self.tpl.render_to_write(ctx, out_file)?; + let state = self.tpl.render_to_write(ctx, out_file)?; if !self.flags.no_postprocess { + if let Some(extra_generated_file) = state.get_temp("extra_generated_file") { + self.postprocessor + .add_path(Utf8Path::new(extra_generated_file.as_str().unwrap())); + } self.postprocessor.add_path(&file_path); } diff --git a/src/template.rs b/src/template.rs index cef1139..43b0697 100644 --- a/src/template.rs +++ b/src/template.rs @@ -6,7 +6,7 @@ use heck::{ ToLowerCamelCase as _, ToShoutySnakeCase as _, ToSnakeCase as _, ToUpperCamelCase as _, }; use itertools::Itertools as _; -use minijinja::{path_loader, value::Kwargs, Value}; +use minijinja::{path_loader, value::Kwargs, State, Value}; pub(crate) fn env(tpl_dir: &Utf8Path) -> Result, minijinja::Error> { let mut env = minijinja::Environment::new(); @@ -146,8 +146,9 @@ pub(crate) fn env(tpl_dir: &Utf8Path) -> Result, env.add_function( // For java lib we need to create extra files. "generate_extra_file", - |filename: Cow<'_, str>, file_contents: Cow<'_, str>| { + |state: &State, filename: Cow<'_, str>, file_contents: Cow<'_, str>| { fs::write(&*filename, file_contents.as_bytes()).unwrap(); + state.set_temp("extra_generated_file", filename.into()); }, );