From 293380600ed493e45eee58f9bc044f28fbfa654a Mon Sep 17 00:00:00 2001 From: Andrew Phillips Date: Tue, 26 Aug 2025 17:33:57 -0300 Subject: [PATCH] feat: add default implementations for outputs and options methods Co-authored-by: aider (openai/andrew/openrouter/deepseek/deepseek-chat-v3.1) --- src/meta_plugin.rs | 16 +++++++++++++ src/meta_plugin/system.rs | 49 +++++++++++---------------------------- 2 files changed, 30 insertions(+), 35 deletions(-) diff --git a/src/meta_plugin.rs b/src/meta_plugin.rs index 0ab381f..fb32484 100644 --- a/src/meta_plugin.rs +++ b/src/meta_plugin.rs @@ -40,6 +40,22 @@ impl BaseMetaPlugin { pub fn new() -> Self { Self::default() } + + pub fn outputs(&self) -> &std::collections::HashMap { + &self.outputs + } + + pub fn outputs_mut(&mut self) -> &mut std::collections::HashMap { + &mut self.outputs + } + + pub fn options(&self) -> &std::collections::HashMap { + &self.options + } + + pub fn options_mut(&mut self) -> &mut std::collections::HashMap { + &mut self.options + } } impl MetaPlugin for BaseMetaPlugin { diff --git a/src/meta_plugin/system.rs b/src/meta_plugin/system.rs index c1f59b7..24f6d80 100644 --- a/src/meta_plugin/system.rs +++ b/src/meta_plugin/system.rs @@ -10,40 +10,38 @@ use std::collections::HashMap; pub struct CwdMetaPlugin { meta_name: String, is_saved: bool, - outputs: std::collections::HashMap, - options: std::collections::HashMap, + base: crate::meta_plugin::BaseMetaPlugin, } impl CwdMetaPlugin { pub fn new( - _options: Option>, + options: Option>, outputs: Option>, ) -> CwdMetaPlugin { - // Start with default options - let mut final_options = std::collections::HashMap::new(); - if let Some(opts) = _options { - for (key, value) in opts { - final_options.insert(key, value); - } - } + let mut base = crate::meta_plugin::BaseMetaPlugin::new(); - // Start with default outputs - let mut final_outputs = std::collections::HashMap::new(); + // Set default outputs let default_outputs = vec!["cwd".to_string()]; for output_name in default_outputs { - final_outputs.insert(output_name.clone(), serde_yaml::Value::String(output_name)); + base.outputs.insert(output_name.clone(), serde_yaml::Value::String(output_name)); + } + + // Apply provided options and outputs + if let Some(opts) = options { + for (key, value) in opts { + base.options.insert(key, value); + } } if let Some(outs) = outputs { for (key, value) in outs { - final_outputs.insert(key, value); + base.outputs.insert(key, value); } } CwdMetaPlugin { meta_name: "cwd".to_string(), is_saved: false, - outputs: final_outputs, - options: final_options, + base, } } @@ -87,25 +85,6 @@ impl MetaPlugin for CwdMetaPlugin { } } - fn outputs(&self) -> &std::collections::HashMap { - &self.outputs - } - - fn outputs_mut(&mut self) -> &mut std::collections::HashMap { - &mut self.outputs - } - - fn default_outputs(&self) -> Vec { - vec!["cwd".to_string()] - } - - fn options(&self) -> &std::collections::HashMap { - &self.options - } - - fn options_mut(&mut self) -> &mut std::collections::HashMap { - &mut self.options - } } #[derive(Debug, Clone, Default)]