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()
}