diff --git a/src/generate.rs b/src/generate.rs index 2714640f1406a7df91fe042273e211971f2e02aa..8a2feaf020173dd0b213ad096fe8ef15796660f6 100644 --- a/src/generate.rs +++ b/src/generate.rs @@ -9,13 +9,28 @@ use anyhow::Result; #[derive(Parser, Debug)] pub struct Opts { /// The path where to generate your project - project_path: PathBuf + project_path: PathBuf, + + /// The name of the generated project. If omitted, deduced from + /// the project_path parameter + #[arg(long,short)] + project_name: Option<String> } -const PIP_MPU_TEMPLATE_PATH: &str = "https://gitlab.univ-lille.fr/2xs/pip/pipcore-mpu-rust-crt0.git"; +const PIP_MPU_TEMPLATE_PATH: &str = "https://gitlab.univ-lille.fr/2xs/pip/pip-mpu-armv7-template.git"; pub fn generate(opts: Opts) -> Result<()> { - todo!("{opts:#?}"); + + let scaffold_opts = cargo_scaffold::Opts::builder(PIP_MPU_TEMPLATE_PATH) + .parameters(vec!["crate_name=TODO_CHANGE", "project-name=TODO_CHANGE"]) + .force(true) + .project_name(match opts.project_name { + Some(name) => name, + None => opts.project_path.file_name().unwrap().to_os_string().into_string().unwrap(), + }) + .target_dir(opts.project_path); + + cargo_scaffold::ScaffoldDescription::new(scaffold_opts)?.scaffold() }