mirror of
https://github.com/github/spec-kit.git
synced 2026-01-30 04:32:02 +00:00
Fix two critical bugs in the argument parsing logic that caused incorrect behavior when --short-name parameter was used: 1. **Index offset bug**: The loop started at i=0 and used i < $#, which incorrectly processed $0 (script name) as the first argument and skipped the last actual parameter. Changed to i=1 and i <= $# to properly iterate through actual command-line arguments ($1 to $#). 2. **Boundary condition bug**: The condition `[ $((i + 1)) -ge $# ]` incorrectly flagged valid arguments as missing. When --short-name was at position $#-1, the next position $# was valid but treated as out-of-bounds. Changed to `[ $((i + 1)) -gt $# ]` for correct validation. 3. **Enhanced validation**: Added check to ensure --short-name value is not another option (doesn't start with --). **Before**: - `script --json "desc" --short-name "test"` → Error: requires a value - `script --json "desc1" "desc2" --short-name` → Generated wrong branch name **After**: - `script --json "desc" --short-name "test"` → Works correctly - `script --json "desc1" "desc2" --short-name` → Proper error message This ensures the script correctly supports both parameter orders: - `[--json] [--short-name <name>] <feature_description>` - `[--json] <feature_description> [--short-name <name>]`