use std::{
fs,
path::{Path, PathBuf},
};
use clap::Parser;
use crate::{SolarError, config::ProjConfig, solar_init};
#[derive(Parser, Clone)]
pub struct New {
name: String,
#[arg(default_value = "cargobinbasic")]
project: ProjConfig,
#[arg(short, long, default_value = ".")]
destination: PathBuf,
}
impl New {
pub fn run(&mut self) -> Result<(), SolarError> {
let project_dir = self.destination.join(&self.name);
fs::create_dir_all(&project_dir)?;
solar_new(&self.project, &mut self.destination, &self.name)
}
}
pub fn solar_new(
config: &ProjConfig,
destination: &mut Path,
name: &str,
) -> Result<(), SolarError> {
let project_dir = destination.join(name);
fs::create_dir_all(&project_dir)?;
solar_init(config, destination)
}