summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-06-27 11:23:52 +0300
committerPaul Buetow <paul@buetow.org>2026-06-27 11:23:52 +0300
commit75925e88fe6f15519490d37e79c93eaa2a3b12aa (patch)
tree5effa70cf32a57497ffa74b4c4a5e2b2825f65bf /src
parent9b16b1bc54213c7349ec9a44ba258466718c0f48 (diff)
ur0: remove dead status-capture/return path in main() and run_action()
Under "set -euo pipefail" the pattern cmd status=$? if (( status != 0 )); then return "$status"; fi is redundant for these positions: errexit already aborts on cmd's failure with cmd's exact exit code before the status check could run. Replace it with bare calls, dropping the now-pointless "local -i status=0" and the status-capture boilerplate (and the stale comments describing it). Deliberately NOT using "cmd || return $?" here: main -> run_action -> run_configured_action -> generate_staged relies on errexit staying ACTIVE so generate_staged's internal "set -e" parallel-job failure detection fires. Putting the call in a "||" list suppresses inner errexit (the gotcha documented in album.source.sh's splash-render note) and lets a failing job sail past. Bare calls preserve the exact exit codes and step ordering. bin/shuriken regenerated from src/ via "just build". Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Diffstat (limited to 'src')
-rw-r--r--src/lib/action.source.sh12
-rwxr-xr-xsrc/shuriken.sh23
2 files changed, 14 insertions, 21 deletions
diff --git a/src/lib/action.source.sh b/src/lib/action.source.sh
index f3e6c2b..c667519 100644
--- a/src/lib/action.source.sh
+++ b/src/lib/action.source.sh
@@ -289,20 +289,22 @@ run_configured_action() {
run_action() {
local -r action="$SHURIKEN_CLI_ACTION"
local requires_config
- local -i status=0
if ! requires_config=$(action_spec_field "$action" 2); then
usage
exit 1
fi
+ # The chosen runner is a bare call under errexit (set -euo pipefail): a
+ # non-zero status aborts with that exact code, so no explicit status check is
+ # needed. We deliberately do NOT use "|| return $?" here: run_configured_action
+ # runs generate_staged, which relies on errexit staying active so its internal
+ # "set -e" parallel-job failure detection fires. A "||" list would suppress
+ # inner errexit and let a failing job sail past (see album.source.sh's
+ # splash-render note).
if [ "$requires_config" = no ]; then
run_unconfigured_action "$action"
else
run_configured_action
fi
- status=$?
- if (( status != 0 )); then
- return "$status"
- fi
}
diff --git a/src/shuriken.sh b/src/shuriken.sh
index 2b8cf9b..2308d90 100755
--- a/src/shuriken.sh
+++ b/src/shuriken.sh
@@ -160,8 +160,6 @@ source "$SHURIKEN_SOURCE_DIR/lib/action.source.sh"
# SHURIKEN_LIB_SOURCES_END
main() {
- local -i status=0
-
SHURIKEN_CLI_ACTION=''
SHURIKEN_CLI_CONFIG_FILE=''
SHURIKEN_CLI_HAS_CONFIG_OVERRIDES='no'
@@ -173,23 +171,16 @@ main() {
exit 1
fi
+ # Each step is a bare call under errexit (set -euo pipefail): a non-zero
+ # status aborts main with that exact code, so no explicit status check is
+ # needed. We deliberately do NOT wrap these in "|| return $?": the called
+ # functions (e.g. run_action -> run_configured_action -> generate_staged)
+ # rely on errexit staying active so their own internal "set -e" failure
+ # detection fires. A "||" list would suppress inner errexit and let a failing
+ # parallel job sail past (see album.source.sh's splash-render note).
parse_cli_arguments "$@"
- status=$?
- if (( status != 0 )); then
- return "$status"
- fi
-
require_gnu_tools
- status=$?
- if (( status != 0 )); then
- return "$status"
- fi
-
run_action
- status=$?
- if (( status != 0 )); then
- return "$status"
- fi
}
main "$@"