auric 0.1.6

CLI for the Ember-inspired Auric SPA framework
use change_case::snake_case;
use clap::Parser;
use std::path::PathBuf;
use std::{fs, path::Path};

#[derive(Debug, Parser)]
pub struct Opts {
    /// Component Name
    #[arg(value_name = "name")]
    pub name: String,
}

pub async fn run(name: String) -> anyhow::Result<()> {
    // Delete template file
    let components_dir = PathBuf::new().join("src").join("components");
    let name_snaked = snake_case(&name);
    let filename = format!("{name_snaked}.hbs");
    let relative_path = components_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());
    }

    Ok(())
}