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}