From f0577c0a0803ae8571611bc1e2f476864e53f923 Mon Sep 17 00:00:00 2001 From: Mauro Lacy <11656534+maurolacy@users.noreply.github.com> Date: Wed, 24 Jun 2026 12:40:54 +0300 Subject: [PATCH 1/2] Fix: Support the runtime's gears name instead of modules Signed-off-by: Mauro Lacy <11656534+maurolacy@users.noreply.github.com> --- crates/cargo-gears-core/src/app_config.rs | 4 ++-- crates/cargo-gears-core/src/help/mod.rs | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/crates/cargo-gears-core/src/app_config.rs b/crates/cargo-gears-core/src/app_config.rs index 55daf41..b95bab4 100644 --- a/crates/cargo-gears-core/src/app_config.rs +++ b/crates/cargo-gears-core/src/app_config.rs @@ -22,10 +22,10 @@ pub struct AppConfig { #[serde(default)] pub opentelemetry: OpenTelemetryConfig, /// Directory containing per-module YAML files (optional). - #[serde(default, skip_serializing_if = "Option::is_none")] + #[serde(default, rename = "gears_dir", skip_serializing_if = "Option::is_none")] pub modules_dir: Option, /// Per-module configuration bag: `module_name` -> module config. - #[serde(default)] + #[serde(default, rename = "gears")] pub modules: BTreeMap, /// Per-vendor configuration bag: `vendor_name` → arbitrary JSON/YAML value. /// Allows vendors to add their own typed configuration sections. diff --git a/crates/cargo-gears-core/src/help/mod.rs b/crates/cargo-gears-core/src/help/mod.rs index c3536d5..34874a6 100644 --- a/crates/cargo-gears-core/src/help/mod.rs +++ b/crates/cargo-gears-core/src/help/mod.rs @@ -261,14 +261,14 @@ fn schema_config(section: Option<&str>) -> anyhow::Result { out.push_str(&MetricsConfig::help_text()); Ok(out) } - Some("modules") => { + Some("gears") => { let mut out = ModuleConfig::help_text(); out.push('\n'); out.push_str(&ModuleRuntime::help_text()); Ok(out) } Some(other) => bail!( - "unknown config section '{other}'; available: server, database, logging, opentelemetry, modules" + "unknown config section '{other}'; available: server, database, logging, opentelemetry, gears" ), } } @@ -312,12 +312,12 @@ mod tests { let text = schema_config(None).expect("overview should succeed"); assert!(text.contains("AppConfig")); assert!(text.contains("server")); - assert!(text.contains("modules")); + assert!(text.contains("gears")); } #[test] fn schema_config_sections_resolve() { - for section in &["server", "database", "logging", "opentelemetry", "modules"] { + for section in &["server", "database", "logging", "opentelemetry", "gears"] { assert!( schema_config(Some(section)).is_ok(), "section '{section}' should resolve" From 0c75804e157864a69dd3b82193d5faa8cb784cbd Mon Sep 17 00:00:00 2001 From: Mauro Lacy <11656534+maurolacy@users.noreply.github.com> Date: Wed, 24 Jun 2026 13:05:47 +0300 Subject: [PATCH 2/2] Rename to gears directly instead of using serde rename Signed-off-by: Mauro Lacy <11656534+maurolacy@users.noreply.github.com> --- crates/cargo-gears-core/src/app_config.rs | 18 +++++++++--------- crates/cargo-gears-core/src/common.rs | 2 +- .../cargo-gears-core/src/config/modules/add.rs | 6 +++--- .../cargo-gears-core/src/config/modules/db.rs | 4 ++-- .../src/config/modules/remove.rs | 2 +- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/crates/cargo-gears-core/src/app_config.rs b/crates/cargo-gears-core/src/app_config.rs index b95bab4..776bf81 100644 --- a/crates/cargo-gears-core/src/app_config.rs +++ b/crates/cargo-gears-core/src/app_config.rs @@ -21,12 +21,12 @@ pub struct AppConfig { /// OpenTelemetry configuration (resource, tracing, metrics). #[serde(default)] pub opentelemetry: OpenTelemetryConfig, - /// Directory containing per-module YAML files (optional). - #[serde(default, rename = "gears_dir", skip_serializing_if = "Option::is_none")] - pub modules_dir: Option, - /// Per-module configuration bag: `module_name` -> module config. - #[serde(default, rename = "gears")] - pub modules: BTreeMap, + /// Directory containing per-gear YAML files (optional). + #[serde(default, skip_serializing_if = "Option::is_none")] + pub gears_dir: Option, + /// Per-gear configuration bag: `gear_name` -> gear config. + #[serde(default)] + pub gears: BTreeMap, /// Per-vendor configuration bag: `vendor_name` → arbitrary JSON/YAML value. /// Allows vendors to add their own typed configuration sections. #[serde(default)] @@ -36,7 +36,7 @@ pub struct AppConfig { impl AppConfig { pub fn create_dependencies(self) -> anyhow::Result { let mut dependencies = CargoTomlDependencies::new(); - for (name, module) in self.modules { + for (name, module) in self.gears { if matches!( module.runtime.as_ref().map(|r| &r.mod_type), Some(RuntimeKind::Oop) @@ -80,8 +80,8 @@ impl Default for AppConfig { database: None, logging: default_logging_config(), opentelemetry: OpenTelemetryConfig::default(), - modules_dir: None, - modules: BTreeMap::new(), + gears_dir: None, + gears: BTreeMap::new(), vendor: VendorConfig::default(), } } diff --git a/crates/cargo-gears-core/src/common.rs b/crates/cargo-gears-core/src/common.rs index b3d1e5c..cb87131 100644 --- a/crates/cargo-gears-core/src/common.rs +++ b/crates/cargo-gears-core/src/common.rs @@ -175,7 +175,7 @@ pub fn get_config(workspace_root: &Path, config_path: &Path) -> anyhow::Result( config_path: &Path, ) -> anyhow::Result<&'a mut ModuleConfig> { config - .modules + .gears .get_mut(module) .with_context(|| format!("module '{module}' not found in {}", config_path.display())) } diff --git a/crates/cargo-gears-core/src/config/modules/remove.rs b/crates/cargo-gears-core/src/config/modules/remove.rs index 4f9d247..8732e2a 100644 --- a/crates/cargo-gears-core/src/config/modules/remove.rs +++ b/crates/cargo-gears-core/src/config/modules/remove.rs @@ -16,7 +16,7 @@ impl RemoveParams { validate_module_name(&self.module)?; let mut config = load_config(config_path)?; - if config.modules.remove(&self.module).is_none() { + if config.gears.remove(&self.module).is_none() { let module = &self.module; bail!("module '{module}' not found in modules section"); }