rocal-cli 0.1.0

CLI tool for local-first-development driven web application framework
Documentation
use std::{
    fs::{self, File},
    io::Write,
};

use quote::quote;

pub fn create_template_file() {
    let root_template_content = quote! {
        use rocal::rocal_core::traits::{SharedRouter, Template};

        pub struct RootTemplate {
            router: SharedRouter,
        }

        impl Template for RootTemplate {
            type Data = String;

            fn new(router: SharedRouter) -> Self {
                RootTemplate { router }
            }

            fn body(&self, data: Self::Data) -> String {
                let mut html = String::from("<h1>Welcome to rocal world!</h1>");

                html += &format!("<p>{}</p>", &data);

                html
            }

            fn router(&self) -> SharedRouter {
                self.router.clone()
            }
        }
    };

    let template_content = quote! {
        pub mod root_template;
    };

    fs::create_dir_all("src/templates").expect("Failed to create src/templates");

    let mut root_template_file = File::create("src/templates/root_template.rs")
        .expect("Failed to create src/templates/root_template.rs");

    root_template_file
        .write_all(root_template_content.to_string().as_bytes())
        .expect("Failed to create src/templates/root_template.rs");
    root_template_file
        .flush()
        .expect("Failed to create src/templates/root_template.rs");

    let mut template_file =
        File::create("src/templates.rs").expect("Failed to create src/templates.rs");

    template_file
        .write_all(template_content.to_string().as_bytes())
        .expect("Failed to create src/templates.rs");
    template_file
        .flush()
        .expect("Failed to create src/templates.rs");
}