diff options
| author | Paul Buetow <paul@buetow.org> | 2026-06-12 15:28:39 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-06-12 15:28:39 +0300 |
| commit | d5a58a1115bb3faa45caefeb053a5808406afa35 (patch) | |
| tree | 013229daf22e5c062fdf5e860c457eb9d0c976bc /src/lib/template.source.sh | |
| parent | 81a3be6379198c697de2f8639dcaa1cdc9d66a53 (diff) | |
Harden status-tested validation paths for bm0
Diffstat (limited to 'src/lib/template.source.sh')
| -rw-r--r-- | src/lib/template.source.sh | 23 |
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" |
