// SPDX-License-Identifier: AGPL-3.0-only mod hbs; mod lua; use reqwest::StatusCode; use crate::CONFIG; pub fn render_theme(name: Option<&str>, ctx: &crate::ctx::Ctx) -> (String, Result) { let mut theme = ""; let mut res = None; if let Some(name) = name { theme = name; res = lua::render_theme(name, ctx) .or_else(|| hbs::render_theme(name, ctx)) } res = res.or_else(|| { log::debug!("Falling back to default theme from requested theme `{theme}`!"); theme = &CONFIG.default_theme; None }) .or_else(|| lua::render_theme(theme, ctx)) .or_else(|| hbs::render_theme(theme, ctx)); let res = res.unwrap_or_else(|| { log::error!("Couldn't load requested theme or default theme `{}`!", CONFIG.default_theme); Err(StatusCode::INTERNAL_SERVER_ERROR)}); (theme.into(), res) } pub fn touch() { hbs::touch(); lua::touch(); }