summaryrefslogtreecommitdiffstats
path: root/src/package/script.rs
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2020-12-03 09:16:30 +0100
committerMatthias Beyer <mail@beyermatthias.de>2020-12-04 08:45:22 +0100
commit0b67aeebc1c50f3a0ba61c6b1fcc0272071d87f8 (patch)
treed6bacb15cb3703054e58a0f29eaf547785b1cf23 /src/package/script.rs
parent5b4617aec92fc0f7666162e3a2b8080f87f0258c (diff)
Add strict script interpolation
This patch adds strict script interpolation, which means that the script interpolation will result in an error if a variable is referenced that does not exist. Before this patch, referencing an absent variable did result in an empty string, possibly resulting in an error at runtime. This feature is on by default. Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Diffstat (limited to 'src/package/script.rs')
-rw-r--r--src/package/script.rs7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/package/script.rs b/src/package/script.rs
index ceabb94..caa6976 100644
--- a/src/package/script.rs
+++ b/src/package/script.rs
@@ -30,7 +30,7 @@ impl<'a> ScriptBuilder<'a> {
}
}
- pub fn build(self, package: &Package, phaseorder: &Vec<PhaseName>) -> Result<Script> {
+ pub fn build(self, package: &Package, phaseorder: &Vec<PhaseName>, strict_mode: bool) -> Result<Script> {
let mut script = format!("{shebang}\n", shebang = self.shebang);
for name in phaseorder {
@@ -71,12 +71,13 @@ impl<'a> ScriptBuilder<'a> {
}
}
- Self::interpolate_package(script, package).map(Script)
+ Self::interpolate_package(script, package, strict_mode).map(Script)
}
- fn interpolate_package(script: String, package: &Package) -> Result<String> {
+ fn interpolate_package(script: String, package: &Package, strict_mode: bool) -> Result<String> {
let mut hb = Handlebars::new();
hb.register_template_string("script", script)?;
+ hb.set_strict_mode(strict_mode);
hb.render("script", package).map_err(Error::from)
}
}