From 5cc5b62196300d02abbb7b2add58600466493245 Mon Sep 17 00:00:00 2001 From: Kiwiwazowski <51145476+avadakedavra-wp@users.noreply.github.com> Date: Sun, 10 Aug 2025 22:20:41 +0700 Subject: [PATCH] fix: preserve errors in project creation --- apps/cli/src/models/project.rs | 3 ++- apps/cli/src/services/project_service.rs | 16 ++++++---------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/apps/cli/src/models/project.rs b/apps/cli/src/models/project.rs index 1ce725d..f294765 100644 --- a/apps/cli/src/models/project.rs +++ b/apps/cli/src/models/project.rs @@ -104,6 +104,7 @@ impl ProjectGenerationResult { } pub fn add_error(&mut self, error: String) { + self.success = false; self.errors.push(error); } -} \ No newline at end of file +} \ No newline at end of file diff --git a/apps/cli/src/services/project_service.rs b/apps/cli/src/services/project_service.rs index b616744..26ac79a 100644 --- a/apps/cli/src/services/project_service.rs +++ b/apps/cli/src/services/project_service.rs @@ -138,7 +138,7 @@ impl DefaultProjectService { impl ProjectService for DefaultProjectService { fn create_project(&self, config: &ProjectConfig) -> Result { - let mut result = ProjectGenerationResult::failure(vec![]); + let mut result = ProjectGenerationResult::success(config.name.clone(), Vec::new()); // Validate project name if let Err(e) = self.validate_project_name(&config.name) { @@ -167,8 +167,6 @@ impl ProjectService for DefaultProjectService { return Ok(result); } - let mut files_created = Vec::new(); - // Create directories for dir in &template.structure.directories { let dir_path = project_path.join(dir); @@ -176,7 +174,7 @@ impl ProjectService for DefaultProjectService { result.add_error(format!("Failed to create directory '{}': {}", dir, e)); continue; } - files_created.push(format!("📁 {}", dir)); + result.files_created.push(format!("📁 {}", dir)); } // Create files @@ -202,7 +200,7 @@ impl ProjectService for DefaultProjectService { continue; } - files_created.push(format!("📄 {}", file.path)); + result.files_created.push(format!("📄 {}", file.path)); } // Create config files @@ -215,13 +213,11 @@ impl ProjectService for DefaultProjectService { continue; } - files_created.push(format!("⚙️ {}", config_file.name)); + result.files_created.push(format!("⚙️ {}", config_file.name)); } + result.project_path = Some(config.name.clone()); - Ok(ProjectGenerationResult::success( - config.name.clone(), - files_created, - )) + Ok(result) } fn list_templates(&self) -> Vec {