diff --git a/src/modes/status.rs b/src/modes/status.rs index 40b24e5..4c1531d 100644 --- a/src/modes/status.rs +++ b/src/modes/status.rs @@ -154,27 +154,57 @@ fn build_meta_plugins_configured_table(settings: &config::Settings) -> Option continue, }; - // Get the actual plugin with user-provided options to see the merged result + // First, create a default plugin to get its default options + let default_plugin = get_meta_plugin( + meta_plugin_type, + None, + None, + ); + + // Start with the default options + let mut effective_options = default_plugin.options().clone(); + + // Merge with the configured options + for (key, value) in &plugin_config.options { + effective_options.insert(key.clone(), value.clone()); + } + // Convert outputs from HashMap to HashMap let outputs_converted: std::collections::HashMap = plugin_config.outputs .iter() .map(|(k, v)| (k.clone(), serde_yaml::Value::String(v.clone()))) .collect(); - // Convert options from HashMap to the correct type - let options_converted = plugin_config.options.clone(); - + // Create the actual plugin with merged options let actual_plugin = get_meta_plugin( meta_plugin_type, - Some(options_converted), + Some(effective_options.clone()), Some(outputs_converted), ); - // Show the merged options - let options_str = if actual_plugin.options().is_empty() { + // Show the merged options including defaults set by the plugin + // Convert options to a YAML string, but handle formatting better + let mut options_to_serialize = actual_plugin.options().clone(); + + // For plugins that set default options programmatically, we need to include them + // Let's get the default plugin to see what options it would have + let default_plugin = get_meta_plugin( + meta_plugin_type, + None, + None, + ); + + // Merge in default options from the plugin implementation + for (key, value) in default_plugin.options() { + if !options_to_serialize.contains_key(key) { + options_to_serialize.insert(key.clone(), value.clone()); + } + } + + let options_str = if options_to_serialize.is_empty() { "{}".to_string() } else { - serde_yaml::to_string(actual_plugin.options()) + serde_yaml::to_string(&options_to_serialize) .unwrap_or_else(|_| "Unable to serialize options".to_string()) .trim() .to_string()