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-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-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-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 resolved=""
|
||||||
local variant
|
local variant
|
||||||
local choice
|
local choice
|
||||||
|
local tty_fd=""
|
||||||
|
|
||||||
load_firmware_variants
|
load_firmware_variants
|
||||||
|
|
||||||
|
|
@ -158,30 +159,33 @@ choose_firmware_variant() {
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -t 0 && -t 1 ]]; then
|
if exec {tty_fd}<>/dev/tty 2>/dev/null; then
|
||||||
echo "Select a firmware variant to build:"
|
printf 'Select a firmware variant to build:\n' >&"$tty_fd"
|
||||||
local idx=1
|
local idx=1
|
||||||
for variant in "${FIRMWARE_VARIANTS[@]}"; do
|
for variant in "${FIRMWARE_VARIANTS[@]}"; do
|
||||||
if [[ "$variant" == "$ACTIVE_FIRMWARE_VARIANT" ]]; then
|
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
|
else
|
||||||
echo " $idx) $(variant_alias "$variant") ($variant)"
|
printf ' %d) %s (%s)\n' "$idx" "$(variant_alias "$variant")" "$variant" >&"$tty_fd"
|
||||||
fi
|
fi
|
||||||
idx=$((idx + 1))
|
idx=$((idx + 1))
|
||||||
done
|
done
|
||||||
|
|
||||||
while true; do
|
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" =~ ^[0-9]+$ ]]; then
|
||||||
if (( choice >= 1 && choice <= ${#FIRMWARE_VARIANTS[@]} )); then
|
if (( choice >= 1 && choice <= ${#FIRMWARE_VARIANTS[@]} )); then
|
||||||
|
exec {tty_fd}>&-
|
||||||
printf '%s\n' "${FIRMWARE_VARIANTS[choice-1]}"
|
printf '%s\n' "${FIRMWARE_VARIANTS[choice-1]}"
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
elif resolved="$(resolve_firmware_variant "$choice" 2>/dev/null)"; then
|
elif resolved="$(resolve_firmware_variant "$choice" 2>/dev/null)"; then
|
||||||
|
exec {tty_fd}>&-
|
||||||
printf '%s\n' "$resolved"
|
printf '%s\n' "$resolved"
|
||||||
return 0
|
return 0
|
||||||
fi
|
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
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue