Fix firmware variant prompt TTY detection
This commit is contained in:
parent
074d4b3005
commit
d1c12dd2b1
2 changed files with 12 additions and 6 deletions
|
|
@ -2,3 +2,5 @@
|
|||
{"id":"int-55a0a37d","kind":"field_change","created_at":"2026-04-15T15:32:17.624534929Z","actor":"w1n5t0n","issue_id":"meml-kx6a","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Added firmware helper scripts and updated docs to the RP2350/C++20/O3 build flow"}}
|
||||
{"id":"int-c4271206","kind":"field_change","created_at":"2026-04-15T15:35:23.153751063Z","actor":"w1n5t0n","issue_id":"meml-efb2","extra":{"field":"status","new_value":"in_progress","old_value":"open"}}
|
||||
{"id":"int-4ab84a6f","kind":"field_change","created_at":"2026-04-15T15:37:55.547397813Z","actor":"w1n5t0n","issue_id":"meml-efb2","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Added variant-aware firmware build selection and interactive prompting"}}
|
||||
{"id":"int-6deafb72","kind":"field_change","created_at":"2026-04-15T15:44:14.681880459Z","actor":"w1n5t0n","issue_id":"meml-zbbs","extra":{"field":"status","new_value":"in_progress","old_value":"open"}}
|
||||
{"id":"int-fd7690f3","kind":"field_change","created_at":"2026-04-15T15:44:48.605669713Z","actor":"w1n5t0n","issue_id":"meml-zbbs","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Prompt variant selection now uses /dev/tty so interactive shells are detected correctly"}}
|
||||
|
|
|
|||
|
|
@ -141,6 +141,7 @@ choose_firmware_variant() {
|
|||
local resolved=""
|
||||
local variant
|
||||
local choice
|
||||
local tty_fd=""
|
||||
|
||||
load_firmware_variants
|
||||
|
||||
|
|
@ -158,30 +159,33 @@ choose_firmware_variant() {
|
|||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -t 0 && -t 1 ]]; then
|
||||
echo "Select a firmware variant to build:"
|
||||
if exec {tty_fd}<>/dev/tty 2>/dev/null; then
|
||||
printf 'Select a firmware variant to build:\n' >&"$tty_fd"
|
||||
local idx=1
|
||||
for variant in "${FIRMWARE_VARIANTS[@]}"; do
|
||||
if [[ "$variant" == "$ACTIVE_FIRMWARE_VARIANT" ]]; then
|
||||
echo " $idx) $(variant_alias "$variant") ($variant, current)"
|
||||
printf ' %d) %s (%s, current)\n' "$idx" "$(variant_alias "$variant")" "$variant" >&"$tty_fd"
|
||||
else
|
||||
echo " $idx) $(variant_alias "$variant") ($variant)"
|
||||
printf ' %d) %s (%s)\n' "$idx" "$(variant_alias "$variant")" "$variant" >&"$tty_fd"
|
||||
fi
|
||||
idx=$((idx + 1))
|
||||
done
|
||||
|
||||
while true; do
|
||||
read -r -p "Variant number or name: " choice
|
||||
printf 'Variant number or name: ' >&"$tty_fd"
|
||||
IFS= read -r -u "$tty_fd" choice
|
||||
if [[ "$choice" =~ ^[0-9]+$ ]]; then
|
||||
if (( choice >= 1 && choice <= ${#FIRMWARE_VARIANTS[@]} )); then
|
||||
exec {tty_fd}>&-
|
||||
printf '%s\n' "${FIRMWARE_VARIANTS[choice-1]}"
|
||||
return 0
|
||||
fi
|
||||
elif resolved="$(resolve_firmware_variant "$choice" 2>/dev/null)"; then
|
||||
exec {tty_fd}>&-
|
||||
printf '%s\n' "$resolved"
|
||||
return 0
|
||||
fi
|
||||
echo "Invalid selection. Enter a number from the list or a variant name."
|
||||
printf 'Invalid selection. Enter a number from the list or a variant name.\n' >&"$tty_fd"
|
||||
done
|
||||
fi
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue