refactor: Centralize status info retrieval in status service

Co-authored-by: aider (openai/andrew/openrouter/deepseek/deepseek-chat-v3.1) <aider@aider.chat>
This commit is contained in:
Andrew Phillips
2025-09-03 09:10:10 -03:00
parent 6aa26e7940
commit 4c9a8e8604
4 changed files with 13 additions and 8 deletions

View File

@@ -15,6 +15,7 @@ pub struct StatusInfo {
pub meta_plugins: std::collections::HashMap<String, MetaPluginInfo>, pub meta_plugins: std::collections::HashMap<String, MetaPluginInfo>,
pub enabled_meta_plugins: Vec<String>, pub enabled_meta_plugins: Vec<String>,
pub filter_plugins: Vec<String>, pub filter_plugins: Vec<String>,
pub configured_meta_plugins: Option<Vec<crate::config::MetaPluginConfig>>,
} }
#[derive(serde::Serialize, serde::Deserialize, ToSchema)] #[derive(serde::Serialize, serde::Deserialize, ToSchema)]

View File

@@ -129,8 +129,8 @@ fn build_config_table(settings: &config::Settings) -> Table {
config_table config_table
} }
fn build_meta_plugins_configured_table(settings: &config::Settings) -> Option<Table> { fn build_meta_plugins_configured_table(status_info: &StatusInfo) -> Option<Table> {
let meta_plugins = settings.meta_plugins.as_ref()?; let meta_plugins = status_info.configured_meta_plugins.as_ref()?;
if meta_plugins.is_empty() { if meta_plugins.is_empty() {
return None; return None;
} }
@@ -297,8 +297,8 @@ pub fn mode_status(
build_path_table(&status_info.paths).printstd(); build_path_table(&status_info.paths).printstd();
println!(); println!();
// Always try to print META PLUGINS CONFIGURED section // Always try to print META PLUGINS CONFIGURED section using status_info
if let Some(meta_plugins_table) = build_meta_plugins_configured_table(settings) { if let Some(meta_plugins_table) = build_meta_plugins_configured_table(&status_info) {
println!("META PLUGINS CONFIGURED:"); println!("META PLUGINS CONFIGURED:");
meta_plugins_table.printstd(); meta_plugins_table.printstd();
println!(); println!();
@@ -310,6 +310,7 @@ pub fn mode_status(
Ok(()) Ok(())
}, },
OutputFormat::Json => { OutputFormat::Json => {
// Create a subset for status info that includes everything
println!("{}", serde_json::to_string_pretty(&status_info)?); println!("{}", serde_json::to_string_pretty(&status_info)?);
Ok(()) Ok(())
}, },

View File

@@ -220,17 +220,17 @@ pub fn mode_status_plugins(
Ok(()) Ok(())
}, },
OutputFormat::Json => { OutputFormat::Json => {
// Create a subset for plugins only // Create a subset for plugins only using status_info
let plugins_info = serde_json::json!({ let plugins_info = serde_json::json!({
"meta_plugins_available": status_info.meta_plugins, "meta_plugins_available": status_info.meta_plugins,
"meta_plugins_configured": settings.meta_plugins, "meta_plugins_configured": status_info.configured_meta_plugins,
"filter_plugins": status_info.filter_plugins "filter_plugins": status_info.filter_plugins
}); });
println!("{}", serde_json::to_string_pretty(&plugins_info)?); println!("{}", serde_json::to_string_pretty(&plugins_info)?);
Ok(()) Ok(())
}, },
OutputFormat::Yaml => { OutputFormat::Yaml => {
// Create a proper structure for plugins info // Create a proper structure for plugins info using status_info
use serde_yaml::Mapping; use serde_yaml::Mapping;
let mut plugins_mapping = Mapping::new(); let mut plugins_mapping = Mapping::new();
@@ -241,7 +241,7 @@ pub fn mode_status_plugins(
); );
// Add configured plugins if they exist // Add configured plugins if they exist
if let Some(configured_plugins) = &settings.meta_plugins { if let Some(configured_plugins) = &status_info.configured_meta_plugins {
plugins_mapping.insert( plugins_mapping.insert(
serde_yaml::Value::String("meta_plugins_configured".to_string()), serde_yaml::Value::String("meta_plugins_configured".to_string()),
serde_yaml::to_value(configured_plugins)?, serde_yaml::to_value(configured_plugins)?,

View File

@@ -39,6 +39,9 @@ impl StatusService {
.map(|name| name.clone()) .map(|name| name.clone())
.collect(); .collect();
// Add configured meta plugins information
status_info.configured_meta_plugins = settings.meta_plugins.clone();
status_info status_info
} }