oseda_cli/templates/
mod.rs1pub mod templater;
2
3pub mod html;
4pub mod md;
5
6use std::collections::HashMap;
7
8use serde::{Deserialize, Serialize};
9use strum_macros::{Display, EnumIter, EnumString};
10
11#[derive(Debug, thiserror::Error)]
12pub enum RendererError {
13 #[error("I/O error while rendering template: {0}")]
14 Io(#[from] std::io::Error),
15
16 #[error("Could not render template: {0}")]
17 CouldNotWriteTemplate(String),
18
19 #[error("Unknown error while rendering template")]
20 Unknown,
21}
22
23pub trait Renderer {
24 fn write_to_fs(&self, target_dir: &str) -> Result<(), RendererError>;
25}
26
27pub fn render_template(text: &str, params: &HashMap<String, String>) -> String {
28 let mut update_me = String::from(text);
29
30 params.iter().for_each(|(key, value)| {
32 update_me = update_me.replace(&format!("{{{{ {key} }}}}"), value);
33 });
34 update_me
35}
36
37#[derive(Serialize, Deserialize, Debug, Clone, Copy, Display, EnumIter, EnumString)]
38#[strum(ascii_case_insensitive)]
39pub enum CLITemplate {
40 HTML,
41 Markdown,
42}