advanced/common/
utils.rs

1use crate::templates::Templates;
2use serde_json::Value;
3use std::path::PathBuf;
4use std::str::FromStr;
5use template_forge::handlebars::DirectorySourceOptions;
6use template_forge::{Forge, ForgeConfig, ForgeTemplate};
7
8pub fn create_forge(preview: bool) -> Forge<Templates, Value> {
9    let config = ForgeConfig {
10        components_dir_path: PathBuf::from("examples/components/"),
11        components_dir_options: DirectorySourceOptions::default(),
12        preview,
13    };
14
15    let mut forge: Forge<Templates, Value> = Forge::new(config).unwrap();
16
17    let template = Templates::EmailValidation(Default::default());
18    if let Templates::EmailValidation(data) = &template {
19        forge
20            .add_template(ForgeTemplate::new(
21                template.clone(),
22                PathBuf::from_str("examples/templates/email_validation.hbs").unwrap(),
23                serde_json::to_value(data.clone()).unwrap(),
24            ))
25            .unwrap();
26    }
27
28    let template = Templates::PasswordReset(Default::default());
29    if let Templates::PasswordReset(data) = &template {
30        forge
31            .add_template(ForgeTemplate::new(
32                template.clone(),
33                PathBuf::from_str("examples/templates/password_reset.hbs").unwrap(),
34                serde_json::to_value(data.clone()).unwrap(),
35            ))
36            .unwrap();
37    }
38
39    forge
40}