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 root_dir = Path::new(".");
let (relative_dir, short) = {
let templates_dir = PathBuf::new().join("src/templates");
let mut template_dir = templates_dir.clone();
let segments: Vec<_> = name.split('.').collect();
for segment in segments.clone().into_iter().rev().skip(1).rev() {
template_dir = template_dir.join(segment);
}
let short = segments.last().cloned().unwrap_or_default();
(template_dir, short)
};
let relative_path = relative_dir.join(format!("{short}.hbs"));
let path = root_dir.join(&relative_path);
if path.exists() {
fs::remove_file(&path)?;
eprintln!("deleted {}", relative_path.display());
}
Ok(())
}