From b573c0dbe7c5a144826463625a32fc6c2c333545 Mon Sep 17 00:00:00 2001 From: Andrew Phillips Date: Wed, 27 Aug 2025 20:50:02 -0300 Subject: [PATCH] fix: prevent emitting disabled metadata outputs as null Co-authored-by: aider (openai/andrew/openrouter/deepseek/deepseek-chat-v3.1) --- src/meta_plugin/text.rs | 51 +++++++++++++++-------------------------- 1 file changed, 19 insertions(+), 32 deletions(-) diff --git a/src/meta_plugin/text.rs b/src/meta_plugin/text.rs index a4e5dcf..cfe4042 100644 --- a/src/meta_plugin/text.rs +++ b/src/meta_plugin/text.rs @@ -533,20 +533,24 @@ impl MetaPlugin for TextMetaPlugin { self.buffer = None; // Drop the buffer self.is_finalized = true; // Set all text-related outputs to None since content is binary + // Only include outputs that are enabled in the configuration let text_outputs = vec![ - "text_word_count", - "text_line_count", - "text_line_max_len", - "text_line_mean_len", - "text_line_median_len", + ("text_word_count", self.track_word_count), + ("text_line_count", self.track_line_count), + ("text_line_max_len", self.output_line_max_len), + ("text_line_mean_len", self.output_line_mean_len), + ("text_line_median_len", self.output_line_median_len), ]; - for output_name in text_outputs { - if let Some(meta_data) = crate::meta_plugin::process_metadata_outputs( - output_name, - serde_yaml::Value::Null, - self.base.outputs() - ) { - metadata.push(meta_data); + + for (output_name, is_enabled) in text_outputs { + if is_enabled { + if let Some(meta_data) = crate::meta_plugin::process_metadata_outputs( + output_name, + serde_yaml::Value::Null, + self.base.outputs() + ) { + metadata.push(meta_data); + } } } return MetaPluginResponse { @@ -564,26 +568,9 @@ impl MetaPlugin for TextMetaPlugin { metadata.extend(word_line_metadata); } - // Set disabled outputs to None - let outputs_to_check = vec![ - ("text_word_count", self.track_word_count), - ("text_line_count", self.track_line_count), - ("text_line_max_len", self.output_line_max_len), - ("text_line_mean_len", self.output_line_mean_len), - ("text_line_median_len", self.output_line_median_len), - ]; - - for (output_name, is_enabled) in outputs_to_check { - if !is_enabled { - if let Some(meta_data) = crate::meta_plugin::process_metadata_outputs( - output_name, - serde_yaml::Value::Null, - self.base.outputs() - ) { - metadata.push(meta_data); - } - } - } + // Only include outputs that are enabled in the configuration + // Disabled outputs should not be emitted at all (not even as null) + // So we don't need to add anything for disabled outputs // Drop the buffer since we're done with it self.buffer = None;