broccoli_cli/template/
mod.rs1pub mod variables;
2
3use std::fs;
4use std::path::Path;
5
6use anyhow::Result;
7
8use self::variables::TemplateVars;
9
10pub fn render(template: &str, vars: &TemplateVars) -> String {
12 template
13 .replace("{{plugin_name}}", &vars.plugin_name)
14 .replace("{{plugin_name_snake}}", &vars.plugin_name_snake)
15 .replace("{{plugin_name_pascal}}", &vars.plugin_name_pascal)
16 .replace("{{server_sdk_dep}}", &vars.server_sdk_dep)
17 .replace("{{web_sdk_dep}}", &vars.web_sdk_dep)
18 .replace("{{web_root}}", &vars.web_root)
19}
20
21pub fn write_template(template: &str, output: &Path, vars: &TemplateVars) -> Result<()> {
24 let content = render(template, vars);
25 if let Some(parent) = output.parent() {
26 fs::create_dir_all(parent)?;
27 }
28 fs::write(output, content)?;
29 Ok(())
30}