diff --git a/src/common/status.rs b/src/common/status.rs index 834e355..e507ae5 100644 --- a/src/common/status.rs +++ b/src/common/status.rs @@ -8,6 +8,7 @@ use crate::compression_engine::CompressionType; use crate::compression_engine::program::CompressionEngineProgram; use crate::meta_plugin::MetaPluginType; use crate::meta_plugin; +use crate::config; #[derive(serde::Serialize, serde::Deserialize, ToSchema)] pub struct StatusInfo { @@ -111,6 +112,16 @@ pub fn generate_status_info( // Plugin initialized successfully } + // Configure plugin with settings if available + // Create a dummy settings object to get plugin configs + let dummy_settings = config::Settings::default(); + if let Some(meta_plugin_configs) = &dummy_settings.meta_plugins { + if let Some(config) = meta_plugin_configs.iter().find(|c| c.name == meta_plugin.meta_name()) { + // Configure the plugin with options and outputs from config + let _ = meta_plugin.configure(&config.options, &config.outputs.iter().map(|(k, v)| (k.clone(), serde_yaml::Value::String(v.clone()))).collect()); + } + } + let (binary_display, args_display) = if !is_supported { ("".to_string(), "".to_string()) } else { diff --git a/src/meta_plugin.rs b/src/meta_plugin.rs index 9119b1c..e147279 100644 --- a/src/meta_plugin.rs +++ b/src/meta_plugin.rs @@ -116,7 +116,7 @@ pub trait MetaPlugin { } // Configure plugin with options (excluding outputs) - fn configure_options(&mut self, _options: &std::collections::HashMap) -> Result<()> { + fn configure_options(&mut self, options: &std::collections::HashMap) -> Result<()> { // Default implementation does nothing - plugins can override this Ok(()) } @@ -128,6 +128,13 @@ pub trait MetaPlugin { } Ok(()) } + + // Configure both options and outputs + fn configure(&mut self, options: &std::collections::HashMap, outputs: &std::collections::HashMap) -> Result<()> { + self.configure_options(options)?; + self.configure_outputs(outputs)?; + Ok(()) + } } pub fn get_meta_plugin(meta_plugin_type: MetaPluginType) -> Box {