summaryrefslogtreecommitdiff
path: root/src/lib/template.source.sh
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-06-12 15:28:39 +0300
committerPaul Buetow <paul@buetow.org>2026-06-12 15:28:39 +0300
commitd5a58a1115bb3faa45caefeb053a5808406afa35 (patch)
tree013229daf22e5c062fdf5e860c457eb9d0c976bc /src/lib/template.source.sh
parent81a3be6379198c697de2f8639dcaa1cdc9d66a53 (diff)
Harden status-tested validation paths for bm0
Diffstat (limited to 'src/lib/template.source.sh')
-rw-r--r--src/lib/template.source.sh23
1 files changed, 10 insertions, 13 deletions
diff --git a/src/lib/template.source.sh b/src/lib/template.source.sh
index 8ab87b2..c7d9ded 100644
--- a/src/lib/template.source.sh
+++ b/src/lib/template.source.sh
@@ -296,7 +296,6 @@ 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)
@@ -305,18 +304,16 @@ source_template_file() {
return "$status"
fi
- 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"
- status=$?
- if [ "$restore_errexit" = yes ]; then
- set -e
+ if {
+ declare -p TEMPLATE_RENDER_FIELD_SPECS
+ declare -p "$render_vars_name"
+ declare -f
+ printf 'serialize_template_render_context %q\n' "$render_vars_name"
+ printf "printf 'unset BASH_ENV\\\\n'\n"
+ } | bash -euo pipefail > "$context_file"; then
+ status=0
+ else
+ status=$?
fi
if (( status != 0 )); then
rm -f "$context_file"