use crate::error::{anyhow::Context, BuildError, ScrapsResult};
use once_cell::sync::Lazy;
use tera::Tera;
use crate::usecase::build::model::color_scheme::ColorScheme;
use super::serde::color_scheme::ColorSchemeTera;
static CSS_TERA: Lazy<Tera> = Lazy::new(|| {
let mut tera = Tera::default();
crate::service::tera_filters::register(&mut tera);
tera.add_raw_templates(vec![(
"__builtins/main.css",
include_str!("builtins/main.css"),
)])
.unwrap();
tera
});
pub fn base(template_dir: &str, color_scheme: &ColorScheme) -> ScrapsResult<(Tera, tera::Context)> {
let mut tera = CSS_TERA.clone();
tera.load_from_glob(template_dir)
.context(BuildError::RenderCss)?;
let mut context = tera::Context::new();
context.insert("color_scheme", &ColorSchemeTera::new(color_scheme));
Ok((tera, context))
}