summaryrefslogtreecommitdiff
path: root/src/lib/template.source.sh
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/template.source.sh')
-rw-r--r--src/lib/template.source.sh21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/lib/template.source.sh b/src/lib/template.source.sh
index 58cdfa8..8ab87b2 100644
--- a/src/lib/template.source.sh
+++ b/src/lib/template.source.sh
@@ -296,6 +296,7 @@ source_template_file() {
local -r output_path="$1"; shift
local -r render_vars_name="$1"; shift
local context_file
+ local restore_errexit=no
local -i status=0
context_file=$(mktemp)
@@ -304,14 +305,20 @@ source_template_file() {
return "$status"
fi
- if {
- serialize_template_render_context "$render_vars_name" \
- &&
+ if [[ "$-" == *e* ]]; then
+ restore_errexit=yes
+ set +e
+ fi
+ (
+ set -e
+ serialize_template_render_context "$render_vars_name"
printf 'unset BASH_ENV\n'
- } > "$context_file"; then
- status=0
- else
- status=$?
+ ) > "$context_file"
+ status=$?
+ if [ "$restore_errexit" = yes ]; then
+ set -e
+ fi
+ if (( status != 0 )); then
rm -f "$context_file"
return "$status"
fi