summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-06-12 08:51:15 +0300
committerPaul Buetow <paul@buetow.org>2026-06-12 08:51:15 +0300
commit08dcc822ece08c72805b18cbd663a4f7fecbf726 (patch)
tree111a7a9839471112efa5f1a378a0c0a9f7a4c634 /src/lib
parent675d450919c63ec9d9955e8ae6a734d8086d96fd (diff)
Guard template render setup failures for bm0
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/template.source.sh75
1 files changed, 62 insertions, 13 deletions
diff --git a/src/lib/template.source.sh b/src/lib/template.source.sh
index 776d25a..93b8187 100644
--- a/src/lib/template.source.sh
+++ b/src/lib/template.source.sh
@@ -279,11 +279,16 @@ template_required_context_vars() {
validate_template_context() {
local -r template_name="$1"; shift
local -r context_name="$1"; shift
+ local -i status=0
local -a required_vars=()
template_required_context_vars_to required_vars "$template_name"
require_template_context_vars "$template_name" "$context_name" \
- "${required_vars[@]}" || return
+ "${required_vars[@]}"
+ status=$?
+ if (( status != 0 )); then
+ return "$status"
+ fi
}
source_template_file() {
@@ -294,19 +299,28 @@ source_template_file() {
local -i status=0
context_file=$(mktemp)
+ status=$?
+ if (( status != 0 )); then
+ return "$status"
+ fi
+
{
serialize_template_render_context "$render_vars_name"
printf 'unset BASH_ENV\n'
} > "$context_file"
-
- if env -i PATH="$PATH" BASH_ENV="$context_file" \
- bash -euo pipefail -- "$template_path" >> "$output_path"; then
- rm -f "$context_file"
- else
- status=$?
+ status=$?
+ if (( status != 0 )); then
rm -f "$context_file"
return "$status"
fi
+
+ env -i PATH="$PATH" BASH_ENV="$context_file" \
+ bash -euo pipefail -- "$template_path" >> "$output_path"
+ status=$?
+ rm -f "$context_file"
+ if (( status != 0 )); then
+ return "$status"
+ fi
}
parse_template_context() {
@@ -468,13 +482,18 @@ validate_template_render_request() {
local -r template_name="$1"; shift
local -r context_name="$1"; shift
local -r template_path="$TEMPLATE_DIR/$template_name.tmpl"
+ local -i status=0
if [ ! -r "$template_path" ]; then
config_error "template file $template_path must be readable"
return 1
fi
- validate_template_context "$template_name" "$context_name" || return
+ validate_template_context "$template_name" "$context_name"
+ status=$?
+ if (( status != 0 )); then
+ return "$status"
+ fi
}
render_template() {
@@ -484,6 +503,7 @@ render_template() {
local -r template_path="$TEMPLATE_DIR/$template_name.tmpl"
local dist_html
local html_dir
+ local -i status=0
# Passed by name to prepare_template_render_vars and source_template_file.
# shellcheck disable=SC2034
local -A render_vars=()
@@ -495,17 +515,46 @@ render_template() {
"Rendering $template_name template into $(_display_path "$dist_html")/$html"
mkdir -p "$dist_html"
- prepare_template_render_vars render_vars "$context_name" || return
- source_template_file "$template_path" "$dist_html/$html" render_vars || return
+ status=$?
+ if (( status != 0 )); then
+ return "$status"
+ fi
+
+ prepare_template_render_vars render_vars "$context_name"
+ status=$?
+ if (( status != 0 )); then
+ return "$status"
+ fi
+
+ source_template_file "$template_path" "$dist_html/$html" render_vars
+ status=$?
+ if (( status != 0 )); then
+ return "$status"
+ fi
}
template() {
local -r template_name="$1"; shift
local -r html="$1"; shift
+ local -i status=0
# shellcheck disable=SC2034
local -A render_context=()
- parse_template_context "$template_name" render_context "$@" || return
- validate_template_render_request "$template_name" render_context || return
- render_template "$template_name" "$html" render_context || return
+ parse_template_context "$template_name" render_context "$@"
+ status=$?
+ if (( status != 0 )); then
+ return "$status"
+ fi
+
+ validate_template_render_request "$template_name" render_context
+ status=$?
+ if (( status != 0 )); then
+ return "$status"
+ fi
+
+ render_template "$template_name" "$html" render_context
+ status=$?
+ if (( status != 0 )); then
+ return "$status"
+ fi
}