1use color_eyre::Result;
2use color_eyre::eyre::eyre;
3use envx_core::wizard::SetupWizard;
4use envx_core::{ProjectTemplate, get_builtin_templates};
5
6pub fn run_wizard(template: Option<String>) -> Result<()> {
15 if let Some(template_name) = template {
16 run_template_setup(&template_name)?;
18 Ok(())
19 } else {
20 let mut wizard = SetupWizard::new();
22 wizard.run()?;
23 Ok(())
24 }
25}
26
27fn run_template_setup(template_name: &str) -> Result<()> {
28 let templates = get_builtin_templates();
29
30 let template = templates
31 .iter()
32 .find(|t| t.name.to_lowercase() == template_name.to_lowercase())
33 .ok_or_else(|| eyre!("Template '{}' not found", template_name))?;
34
35 println!("š Setting up {} project...", template.name);
36 println!("{}\n", template.description);
37
38 apply_template(template)?;
40
41 println!("\nā
Project setup complete!");
42 Ok(())
43}
44
45fn apply_template(template: &ProjectTemplate) -> Result<()> {
46 let _ = template;
47 unimplemented!()
49}
50
51pub fn list_templates() -> Result<()> {
58 let templates = get_builtin_templates();
59
60 println!("Available project templates:\n");
61
62 for template in templates {
63 println!(" {} - {}", template.name, template.description);
64 }
65
66 println!("\nUse: envx init --template <name>");
67 Ok(())
68}