use clap::Parser;
use std::path::PathBuf;
use std::{fs, path::Path};
#[derive(Debug, Parser)]
pub struct Opts {
#[arg(value_name = "name")]
pub name: String,
}
pub async fn run(name: String) -> anyhow::Result<()> {
let routes_dir = PathBuf::new().join("src/routes");
let modulename = change_case::snake_case(&name);
let filename = format!("{modulename}.rs");
let relative_path = routes_dir.join(filename);
let root_dir = Path::new(".");
let path = root_dir.join(&relative_path);
if path.exists() {
fs::remove_file(path)?;
eprintln!("deleted {}", relative_path.display());
}
let relative_path = routes_dir.join("mod.rs");
let path = root_dir.join(&relative_path);
let code = fs::read_to_string(&path)?;
let new_code = code.replace(&format!("pub mod {modulename};\n"), "");
if code != new_code {
fs::write(&path, new_code)?;
eprintln!("updated {}", relative_path.display());
}
super::template::run(name).await?;
Ok(())
}