From f62fb85fe6745b13f7f2eca8f47ae8491cf44e99 Mon Sep 17 00:00:00 2001 From: Aravinth Manivannan Date: Fri, 10 Jan 2025 16:20:20 +0530 Subject: [PATCH] feat: generate template page codegen script --- utils/generate_template_page.sh | 100 ++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100755 utils/generate_template_page.sh diff --git a/utils/generate_template_page.sh b/utils/generate_template_page.sh new file mode 100755 index 0000000..e52b764 --- /dev/null +++ b/utils/generate_template_page.sh @@ -0,0 +1,100 @@ +#!/bin/bash + +help() { + echo "Usage: web_test_generator.sh + + + + " +} + + + run() { + echo " +// SPDX-FileCopyrightText: 2024 Aravinth Manivannan +// +// SPDX-License-Identifier: AGPL-3.0-or-later +use std::cell::RefCell; + +use derive_builder::*; +use derive_more::*; +use serde::*; +use tera::Context; +use url::Url; + +pub use super::*; +use crate::utils::*; + +pub const $2_PAGE: TemplateFile = TemplateFile::new( + \"$1.$3\", + \"$1/$3.html\", +); + +pub fn register_templates(t: &mut tera::Tera) { + $2_PAGE + .register(t) + .expect($2_PAGE.name); +} + +pub struct $4Page { + ctx: RefCell, +} + +impl $4Page { + pub fn new() -> Self { + let mut ctx = context(); + + //ctx.insert(PAYLOAD_KEY, p); + + let ctx = RefCell::new(ctx); + Self { ctx } + } + + pub fn render(&self) -> String { + TEMPLATES + .render($2_PAGE.name, &self.ctx.borrow()) + .unwrap() + } + + pub fn page() -> String { + let p = Self::new(); + p.render() + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn render_page_and_write() { + const FILE: &str = \"./tmp/$1-$3.html\"; + + let tw = TestWriterBuilder::default() + .file(FILE.into()) + .contents($4Page::page()) + .build() + .unwrap(); + tw.write(); + } +} " +} + + + +if [ -z $1 ] +then + help +elif [ -z $2 ] +then + help +elif [ -z $3 ] +then + help +elif [ -z $4 ] +then + help +else + run $1 $2 $3 $4 | wl-copy + run $1 $2 $3 $4 +fi