From 7b17bbaf352b2b92b4da9525badc6fd370bcedb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Hauspie?= <michael.hauspie@univ-lille.fr> Date: Fri, 31 May 2024 10:34:03 +0200 Subject: [PATCH] Fix gen from template --- src/generate.rs | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/generate.rs b/src/generate.rs index 2714640..8a2feaf 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() } -- GitLab