create-rspc-app 0.0.3

Get started with your next rspc app!
Documentation
use std::{io, path::Path};

use walkdir::WalkDir;

use crate::{
    database::Database, framework::Framework, frontend_framework::FrontendFramework,
    utils::replace_in_file,
};

pub fn code_generator(
    framework: Framework,
    database: Database,
    frontend_framework: FrontendFramework,
    path: &Path,
    project_name: &str,
) -> io::Result<()> {
    if database == Database::None {
        framework.render(path, project_name)?;
    } else {
        database.render(path, project_name, framework.clone())?;
    }

    frontend_framework.render(path, project_name, framework)?;

    for entry in WalkDir::new(path) {
        let entry = entry.unwrap();
        if entry.file_name().to_str() == Some("Cargo__toml") {
            replace_in_file(entry.path(), "__cra_version__", env!("CARGO_PKG_VERSION"))?;
            std::fs::rename(entry.path(), entry.path().with_file_name("Cargo.toml"))?;
        }
    }

    println!("Generated project at '{}'", path.display());

    Ok(())
}