From f9b145585f3f85190f42215fc0be8efcca9e994c Mon Sep 17 00:00:00 2001 From: Oskar Kapala Date: Wed, 3 Jun 2026 18:02:50 +0200 Subject: [PATCH] fix(dev): agent.sh validate_name set -e safety + ERR trap MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refactor [ test ] && prefail pattern to if/then/fi — set -euo pipefail was silently exiting after the loop because the failing-test compound propagated exit code 1 through the function return. Add ERR trap so future silent fails get diagnosed at the source. --- scripts/dev/agent.sh | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/scripts/dev/agent.sh b/scripts/dev/agent.sh index 823e8e3..ae79daf 100755 --- a/scripts/dev/agent.sh +++ b/scripts/dev/agent.sh @@ -3,6 +3,8 @@ # EXIT: 0 ok, 1 preflight, 2 operation failed. set -euo pipefail +trap 'echo "agent.sh: failed at line $LINENO (exit $?)" >&2' ERR + RESERVED_NAMES=(master main HEAD list merge clean new) MAX_WORKTREES=4 @@ -73,9 +75,13 @@ age_str() { validate_name() { local name="$1" - [[ "$name" =~ ^[a-z][a-z0-9-]*$ ]] || prefail "name '$name' must match ^[a-z][a-z0-9-]*$" + if ! [[ "$name" =~ ^[a-z][a-z0-9-]*$ ]]; then + prefail "name '$name' must match ^[a-z][a-z0-9-]*$" + fi for r in "${RESERVED_NAMES[@]}"; do - [ "$name" = "$r" ] && prefail "'$name' is a reserved word" + if [ "$name" = "$r" ]; then + prefail "'$name' is a reserved word" + fi done }