framework tools/git: issue-create R1/R4 conversion + template bug fix (P1)
- issue-create: usage() default exit is now 2 (usage-error contract); unknown option, missing title, and value-less -t/-b/-l/-m land there with stderr messages; exit-code line added to help. Interactive -i/--interactive unchanged (boolean, no value arm). Existing body-safety and interactive-auth suites still green. - Template bug fixed across ALL seven usage-contract suites: expect_stderr referenced an unbound $desc (should be $2); latent until issue-create's capitalized 'Unknown option' missed the case-sensitive grep and fired it. All seven re-verified green. - Suite enrolled (population 79); mirrored to the brain tree.
This commit is contained in:
@@ -74,26 +74,39 @@ Examples:
|
||||
$(basename "$0") -t "Fix login bug" -l "bug,priority-high"
|
||||
$(basename "$0") -t "Add dark mode" -b "Implement theme switching" -m "0.2.0"
|
||||
$(basename "$0") -i
|
||||
|
||||
Exit codes: 0 success; 2 usage error (stderr); 1 provider/credential failure.
|
||||
EOF
|
||||
exit "${1:-1}"
|
||||
exit "${1:-2}"
|
||||
}
|
||||
|
||||
# Parse arguments
|
||||
# Usage-error contract (R4, 2026-08-28): usage errors print to STDERR and exit 2,
|
||||
# distinct from provider, credential, and verification failures (exit 1).
|
||||
usage_error() {
|
||||
echo "Error: $*" >&2
|
||||
usage
|
||||
}
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
-t|--title)
|
||||
[[ $# -ge 2 ]] || usage_error "option $1 requires a value"
|
||||
TITLE="$2"
|
||||
shift 2
|
||||
;;
|
||||
-b|--body)
|
||||
[[ $# -ge 2 ]] || usage_error "option $1 requires a value"
|
||||
BODY="$2"
|
||||
shift 2
|
||||
;;
|
||||
-l|--labels)
|
||||
[[ $# -ge 2 ]] || usage_error "option $1 requires a value"
|
||||
LABELS="$2"
|
||||
shift 2
|
||||
;;
|
||||
-m|--milestone)
|
||||
[[ $# -ge 2 ]] || usage_error "option $1 requires a value"
|
||||
MILESTONE="$2"
|
||||
shift 2
|
||||
;;
|
||||
|
||||
Reference in New Issue
Block a user