summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-06-12 08:42:36 +0300
committerPaul Buetow <paul@buetow.org>2026-06-12 08:42:36 +0300
commit675d450919c63ec9d9955e8ae6a734d8086d96fd (patch)
tree0579a8185ed473ce06ec33788e4bdf35a43f22de /src
parentac6d1ad45c6a286a7b31090649d232bb5ee7d8bc (diff)
Propagate dispatcher validation failures for bm0
Diffstat (limited to 'src')
-rw-r--r--src/lib/action.source.sh82
-rwxr-xr-xsrc/shuriken.sh11
2 files changed, 93 insertions, 0 deletions
diff --git a/src/lib/action.source.sh b/src/lib/action.source.sh
index f1103a6..165cb2b 100644
--- a/src/lib/action.source.sh
+++ b/src/lib/action.source.sh
@@ -25,6 +25,7 @@ run_simple_action() {
load_configured_action() {
local -r rc_file="$1"; shift
+ local -i status=0
if [ ! -f "$rc_file" ]; then
missing_config "$rc_file"
@@ -32,9 +33,29 @@ load_configured_action() {
# shellcheck source=/dev/null
source "$rc_file"
+ status=$?
+ if (( status != 0 )); then
+ return "$status"
+ fi
+
apply_config_defaults
+ status=$?
+ if (( status != 0 )); then
+ return "$status"
+ fi
+
apply_template_dir_default
+ status=$?
+ if (( status != 0 )); then
+ return "$status"
+ fi
+
apply_cli_overrides
+ status=$?
+ if (( status != 0 )); then
+ return "$status"
+ fi
+
SHURIKEN_CONFIG_SOURCE="$rc_file"
export SHURIKEN_CONFIG_SOURCE
}
@@ -61,6 +82,7 @@ log_configured_action() {
run_configured_action() {
local rc_file
+ local -i status=0
if [[ "$SHURIKEN_FORCE_GENERATE" = yes \
&& "$SHURIKEN_CLI_ACTION" != --generate ]]; then
@@ -70,6 +92,11 @@ run_configured_action() {
rc_file="$(resolve_config_file "$SHURIKEN_CLI_CONFIG_FILE")"
load_configured_action "$rc_file"
+ status=$?
+ if (( status != 0 )); then
+ return "$status"
+ fi
+
log_configured_action "$rc_file"
case "$SHURIKEN_CLI_ACTION" in
@@ -83,34 +110,89 @@ run_configured_action() {
;;
--generate)
validate_generation_config
+ status=$?
+ if (( status != 0 )); then
+ return "$status"
+ fi
+
generate_staged
+ status=$?
+ if (( status != 0 )); then
+ return "$status"
+ fi
;;
--refresh-splash)
validate_refresh_splash_config
+ status=$?
+ if (( status != 0 )); then
+ return "$status"
+ fi
+
refresh_splash
+ status=$?
+ if (( status != 0 )); then
+ return "$status"
+ fi
;;
--sync)
validate_sync_config
+ status=$?
+ if (( status != 0 )); then
+ return "$status"
+ fi
+
sync_dist
+ status=$?
+ if (( status != 0 )); then
+ return "$status"
+ fi
;;
--dry-run)
validate_generation_config no
+ status=$?
+ if (( status != 0 )); then
+ return "$status"
+ fi
+
dry_run
+ status=$?
+ if (( status != 0 )); then
+ return "$status"
+ fi
;;
--print-config)
validate_print_config
+ status=$?
+ if (( status != 0 )); then
+ return "$status"
+ fi
+
print_config
+ status=$?
+ if (( status != 0 )); then
+ return "$status"
+ fi
;;
esac
}
run_action() {
+ local -i status=0
+
case "$SHURIKEN_CLI_ACTION" in
--version|--init)
run_simple_action
+ status=$?
+ if (( status != 0 )); then
+ return "$status"
+ fi
;;
--clean|--generate|--refresh-splash|--sync|--dry-run|--print-config)
run_configured_action
+ status=$?
+ if (( status != 0 )); then
+ return "$status"
+ fi
;;
*)
usage
diff --git a/src/shuriken.sh b/src/shuriken.sh
index a3d6f1f..901b558 100755
--- a/src/shuriken.sh
+++ b/src/shuriken.sh
@@ -101,6 +101,8 @@ 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'
@@ -113,7 +115,16 @@ main() {
fi
parse_cli_arguments "$@"
+ status=$?
+ if (( status != 0 )); then
+ return "$status"
+ fi
+
run_action
+ status=$?
+ if (( status != 0 )); then
+ return "$status"
+ fi
}
main "$@"