use crate::{
generator::generate_files,
models::model_params::FileGenerationParams,
};
use std::io;
pub fn generate_from_args(args_str: &str) -> io::Result<()> {
let args = args_str.split_whitespace();
let mut params = FileGenerationParams::default();
for arg in args {
let mut parts = arg.splitn(2, '=');
let name = parts.next().unwrap_or_default();
let value = parts.next().unwrap_or_default();
match name {
"--author" => params.author = Some(value.to_string()),
"--build" => params.build = Some(value.to_string()),
"--categories" => {
params.categories = Some(value.to_string());
}
"--description" => {
params.description = Some(value.to_string());
}
"--documentation" => {
params.documentation = Some(value.to_string());
}
"--edition" => params.edition = Some(value.to_string()),
"--email" => params.email = Some(value.to_string()),
"--homepage" => params.homepage = Some(value.to_string()),
"--keywords" => params.keywords = Some(value.to_string()),
"--license" => params.license = Some(value.to_string()),
"--name" => params.name = Some(value.to_string()),
"--output" => params.output = Some(value.to_string()),
"--readme" => params.readme = Some(value.to_string()),
"--repository" => {
params.repository = Some(value.to_string());
}
"--rustversion" => {
params.rustversion = Some(value.to_string());
}
"--version" => params.version = Some(value.to_string()),
"--website" => params.website = Some(value.to_string()),
_ => {
return Err(io::Error::new(
io::ErrorKind::Other,
format!("Invalid argument: {name}"),
))
}
}
}
println!("{params:?}");
generate_files(params)?;
Ok(())
}