From 81a3be6379198c697de2f8639dcaa1cdc9d66a53 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Fri, 12 Jun 2026 15:15:38 +0300 Subject: Fix remaining errexit masking for bm0 --- src/lib/action.source.sh | 2 +- src/lib/album.source.sh | 44 +++++++++++++++++++++++++++++++++++++------- src/lib/template.source.sh | 21 ++++++++++++++------- 3 files changed, 52 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/lib/action.source.sh b/src/lib/action.source.sh index aba24a8..f3e92be 100644 --- a/src/lib/action.source.sh +++ b/src/lib/action.source.sh @@ -27,7 +27,7 @@ run_action_body() { if [[ "$-" == *e* ]]; then "$@" else - ( "$@" ) + ( set -e; "$@" ) fi } diff --git a/src/lib/album.source.sh b/src/lib/album.source.sh index 29eff6b..b5495f5 100644 --- a/src/lib/album.source.sh +++ b/src/lib/album.source.sh @@ -943,21 +943,51 @@ generate() { } refresh_splash() { + local restore_errexit=no + local -i status=0 local tmp_html local tmp_path tmp_path=$(mktemp "$DIST_DIR/.index.html.XXXXXX") tmp_html=$(basename "$tmp_path") - if render_album_splash_page 'photos' '.' 'blurs' '.' "$tmp_html" \ - && prepare_generation_site_assets; then - mv "$DIST_DIR/$tmp_html" "$DIST_DIR/index.html" - log_info "Refreshed splash page $(_display_path "$DIST_DIR/index.html")" - return + if [[ "$-" == *e* ]]; then + restore_errexit=yes + set +e + fi + ( + set -e + render_album_splash_page 'photos' '.' 'blurs' '.' "$tmp_html" + ) + status=$? + if [ "$restore_errexit" = yes ]; then + set -e + fi + if (( status != 0 )); then + rm -f "$DIST_DIR/$tmp_html" + return "$status" + fi + + restore_errexit=no + if [[ "$-" == *e* ]]; then + restore_errexit=yes + set +e + fi + ( + set -e + prepare_generation_site_assets + ) + status=$? + if [ "$restore_errexit" = yes ]; then + set -e + fi + if (( status != 0 )); then + rm -f "$DIST_DIR/$tmp_html" + return "$status" fi - rm -f "$DIST_DIR/$tmp_html" - return 1 + mv "$DIST_DIR/$tmp_html" "$DIST_DIR/index.html" + log_info "Refreshed splash page $(_display_path "$DIST_DIR/index.html")" } dry_run() { 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 -- cgit v1.2.3