refactor(core): ♻️ 简化终端宽度处理并重构代码结构

为了提高脚本的可维护性,简化了 `brew-upgrade-manager.sh` 中的终端宽度逻辑。通过移除复杂的命令行参数解析和动态宽度检测,改为使用固定的 130 列配置,并同步更新了引导脚本以导出环境变量。

- 移除冗余的命令行参数解析逻辑
- 将终端宽度处理逻辑重写为简单的函数
- 强制导出 `COLUMNS` 环境变量以统一输出格式
- 优化了脚本内部执行步骤的视觉分隔效果
This commit is contained in:
2026-05-09 08:48:58 +08:00
parent f80711e5f7
commit 3eb494683a
2 changed files with 6 additions and 58 deletions

View File

@@ -63,4 +63,5 @@ if [[ "${BREWUP_DEBUG:-}" == "1" ]]; then
head -n 1 "$TEMP"
fi
export COLUMNS="130"
bash "$TEMP" "$@"

View File

@@ -37,59 +37,10 @@ else
fi
# --- 终端宽度和打印函数 ---
DEFAULT_FALLBACK_WIDTH="130"
TERMINAL_WIDTH_OVERRIDE=""
# 解析命令行参数
while [[ $# -gt 0 ]]; do
case "$1" in
--width)
if [[ -n "$2" && "$2" =~ ^[0-9]+$ ]]; then
TERMINAL_WIDTH_OVERRIDE="$2"
shift 2
else
echo -e "${YELLOW}Error: '--width' parameter requires a valid numeric value.${NC}"
exit 1
fi
;;
--width=*)
TERMINAL_WIDTH_OVERRIDE="${1#*=}"
if ! [[ "$TERMINAL_WIDTH_OVERRIDE" =~ ^[0-9]+$ ]]; then
echo -e "${YELLOW}Error: '--width' parameter requires a valid numeric value.${NC}"
exit 1
fi
shift
;;
*)
shift
;;
esac
done
FIXED_TERMINAL_WIDTH=""
if [[ -n "$TERMINAL_WIDTH_OVERRIDE" ]]; then
FIXED_TERMINAL_WIDTH="$TERMINAL_WIDTH_OVERRIDE"
elif [[ -n "$HB_TERMINAL_WIDTH" && "$HB_TERMINAL_WIDTH" =~ ^[0-9]+$ ]]; then
FIXED_TERMINAL_WIDTH="$HB_TERMINAL_WIDTH"
fi
TERMINAL_WIDTH="130"
terminal_width() {
local width=""
if [[ -n "$FIXED_TERMINAL_WIDTH" ]]; then
printf "%s" "$FIXED_TERMINAL_WIDTH"
return
fi
if command -v stty &>/dev/null && stty size &>/dev/null; then
width=$(stty size 2>/dev/null | awk '{print $2}')
fi
if [[ -z "$width" || "$width" -le 0 ]]; then
width=$(tput cols 2>/dev/null || echo "$DEFAULT_FALLBACK_WIDTH")
fi
if [[ -z "$width" || "$width" -le 0 ]]; then
width="$DEFAULT_FALLBACK_WIDTH"
fi
printf "%s" "$width"
printf "%s" "$TERMINAL_WIDTH"
}
separator() { local width; width=$(terminal_width); printf '=%.0s' $(seq 1 "$width"); printf "\n"; }
@@ -139,13 +90,9 @@ echo -e "\n${CYAN}>>> [2/2] Upgrading GUI Casks (brew upgrade --cask --greedy --
export HOMEBREW_COLOR=1
# --- 终端宽度处理 ---
# 交互式终端里让 brew 直接读取当前 TTY避免 sudo 时间戳因新建 PTY 失效
if [[ -n "$FIXED_TERMINAL_WIDTH" || ! -t 1 ]]; then
export COLUMNS
COLUMNS="$(terminal_width)"
else
unset COLUMNS
fi
# 固定宽度,避免动态识别终端列数导致 prompt 重绘异常
export COLUMNS
COLUMNS="$(terminal_width)"
brew upgrade --cask --greedy --force