From 98f4676d19ac534fa78f56cab380d5173a5c7706 Mon Sep 17 00:00:00 2001 From: Scott Larkin Date: Wed, 29 Jan 2025 14:56:17 -0500 Subject: [PATCH] feat(init): add CodeClimate configuration migration support Add functionality to detect and migrate existing .codeclimate.yml configurations during qlty initialization. The migration: - Detects existing .codeclimate.yml in project root - Prompts user for migration confirmation (respects --yes/--no flags) - Executes migration using 'qlty config migrate' - Provides success feedback to user This helps users transition from CodeClimate to qlty while preserving their existing configurations. --- qlty-cli/src/commands/init.rs | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/qlty-cli/src/commands/init.rs b/qlty-cli/src/commands/init.rs index 33563c7d7..e01531161 100644 --- a/qlty-cli/src/commands/init.rs +++ b/qlty-cli/src/commands/init.rs @@ -13,6 +13,8 @@ use qlty_config::Workspace; use std::io::Write; use tabwriter::TabWriter; +const CLASSIC_CONFIG_NAME: &str = ".codeclimate.yml"; + #[derive(Args, Debug)] pub struct Init { /// Answer yes to all prompts @@ -106,9 +108,9 @@ impl Init { self.print_enabled_plugins(&initializer)?; } - // if !self.skip_migrate && .codeclimate.yml exists{ - // self.maybe_migrate_config - // } + if !self.skip_plugins { + self.maybe_migrate_config()?; + } if !self.skip_plugins { self.plugins_post_init(&initializer)?; @@ -266,4 +268,26 @@ impl Init { let current_exe = std::env::current_exe()?; Ok(current_exe) } + + fn maybe_migrate_config(&self) -> Result<()> { + let workspace = Workspace::new()?; + let classic_config_path = workspace.root.join(CLASSIC_CONFIG_NAME); + + if classic_config_path.exists() { + if !self.no + && (self.yes + || Confirm::with_theme(&ColorfulTheme::default()) + .with_prompt( + "Would you like to migrate your .codeclimate.yml configuration?", + ) + .default(true) + .show_default(true) + .interact()?) + { + cmd!(self.current_exe()?, "config", "migrate").run()?; + self.print_check("Migrated .codeclimate.yml configuration"); + } + } + Ok(()) + } }