fix(dev): agent.sh validate_name set -e safety + ERR trap
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.
This commit is contained in:
parent
3b620ef7e3
commit
f9b145585f
|
|
@ -3,6 +3,8 @@
|
||||||
# EXIT: 0 ok, 1 preflight, 2 operation failed.
|
# EXIT: 0 ok, 1 preflight, 2 operation failed.
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
|
trap 'echo "agent.sh: failed at line $LINENO (exit $?)" >&2' ERR
|
||||||
|
|
||||||
RESERVED_NAMES=(master main HEAD list merge clean new)
|
RESERVED_NAMES=(master main HEAD list merge clean new)
|
||||||
MAX_WORKTREES=4
|
MAX_WORKTREES=4
|
||||||
|
|
||||||
|
|
@ -73,9 +75,13 @@ age_str() {
|
||||||
|
|
||||||
validate_name() {
|
validate_name() {
|
||||||
local name="$1"
|
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
|
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
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue