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