diff options
Diffstat (limited to 'crates/driver/src/template.rs')
-rw-r--r-- | crates/driver/src/template.rs | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/crates/driver/src/template.rs b/crates/driver/src/template.rs index 7bb089c..1a091ed 100644 --- a/crates/driver/src/template.rs +++ b/crates/driver/src/template.rs @@ -5,38 +5,36 @@ use common::error::*; use crate::args::TaskArgs; -fn escape(s: &str) -> String { +fn escape_sh(s: &str) -> String { format!("'{}'", s.replace('\'', "'\\''")) } #[derive(Debug)] pub struct TemplateEngine { tpl: Handlebars<'static>, - tpl_raw: Handlebars<'static>, + tpl_sh: Handlebars<'static>, } impl TemplateEngine { pub fn new() -> Self { let mut tpl = Handlebars::new(); tpl.set_strict_mode(true); - tpl.register_escape_fn(escape); + tpl.register_escape_fn(handlebars::no_escape); - let mut tpl_raw = Handlebars::new(); - tpl_raw.set_strict_mode(true); - tpl_raw.register_escape_fn(handlebars::no_escape); + let mut tpl_sh = Handlebars::new(); + tpl_sh.set_strict_mode(true); + tpl_sh.register_escape_fn(escape_sh); - TemplateEngine { tpl, tpl_raw } - } - - pub fn eval_raw(&self, input: &str, args: &TaskArgs) -> Result<String> { - self.tpl_raw - .render_template(input, args) - .map_err(Error::new) + TemplateEngine { tpl, tpl_sh } } pub fn eval(&self, input: &str, args: &TaskArgs) -> Result<String> { self.tpl.render_template(input, args).map_err(Error::new) } + + pub fn eval_sh(&self, input: &str, args: &TaskArgs) -> Result<String> { + self.tpl_sh.render_template(input, args).map_err(Error::new) + } } lazy_static! { |