actr_cli/commands/initialize/
mod.rs1mod kotlin;
2mod python;
3mod swift;
4pub mod traits;
5
6use crate::commands::SupportedLanguage;
7use crate::error::{ActrCliError, Result};
8use kotlin::KotlinInitializer;
9use python::PythonInitializer;
10use swift::SwiftInitializer;
11
12pub use traits::{InitContext, ProjectInitializer};
13
14pub struct InitializerFactory;
15
16impl InitializerFactory {
17 pub fn get_initializer(language: SupportedLanguage) -> Result<Box<dyn ProjectInitializer>> {
18 match language {
19 SupportedLanguage::Rust => Err(ActrCliError::Unsupported(
20 "Rust initialization is handled by InitCommand".to_string(),
21 )),
22 SupportedLanguage::Python => Ok(Box::new(PythonInitializer)),
23 SupportedLanguage::Swift => Ok(Box::new(SwiftInitializer)),
24 SupportedLanguage::Kotlin => Ok(Box::new(KotlinInitializer)),
25 }
26 }
27}
28
29pub fn execute_initialize(language: SupportedLanguage, context: &InitContext) -> Result<()> {
30 let initializer = InitializerFactory::get_initializer(language)?;
31 initializer.generate_project_structure(context)?;
32 initializer.print_next_steps(context);
33 Ok(())
34}