summaryrefslogtreecommitdiffstats
path: root/crates/driver/src/template.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/driver/src/template.rs')
-rw-r--r--crates/driver/src/template.rs24
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! {