fix(installer): handle macos gum node failures

This commit is contained in:
Peter Steinberger
2026-04-26 06:35:56 +01:00
parent be8a3617d9
commit cbf9c60f1d
3 changed files with 68 additions and 5 deletions

View File

@@ -404,7 +404,7 @@ is_shell_function() {
is_gum_raw_mode_failure() {
local err_log="$1"
[[ -s "$err_log" ]] || return 1
grep -Eiq 'setrawmode' "$err_log"
grep -Eiq 'setrawmode|inappropriate ioctl' "$err_log"
}
run_with_spinner() {
@@ -412,13 +412,25 @@ run_with_spinner() {
shift
if [[ -n "$GUM" ]] && gum_is_tty && ! is_shell_function "${1:-}"; then
local gum_err
local gum_err gum_out
gum_err="$(mktempfile)"
if "$GUM" spin --spinner dot --title "$title" -- "$@" 2>"$gum_err"; then
gum_out="$(mktempfile)"
if "$GUM" spin --spinner dot --title "$title" -- "$@" >"$gum_out" 2>"$gum_err"; then
if is_gum_raw_mode_failure "$gum_out" || is_gum_raw_mode_failure "$gum_err"; then
GUM=""
GUM_STATUS="skipped"
GUM_REASON="gum raw mode unavailable"
ui_warn "Spinner unavailable in this terminal; continuing without spinner"
"$@"
return $?
fi
if [[ -s "$gum_out" ]]; then
cat "$gum_out"
fi
return 0
fi
local gum_status=$?
if is_gum_raw_mode_failure "$gum_err"; then
if is_gum_raw_mode_failure "$gum_err" || is_gum_raw_mode_failure "$gum_out"; then
GUM=""
GUM_STATUS="skipped"
GUM_REASON="gum raw mode unavailable"