refactor(core): ♻️ 简化终端宽度处理并重构代码结构
为了提高脚本的可维护性,简化了 `brew-upgrade-manager.sh` 中的终端宽度逻辑。通过移除复杂的命令行参数解析和动态宽度检测,改为使用固定的 130 列配置,并同步更新了引导脚本以导出环境变量。 - 移除冗余的命令行参数解析逻辑 - 将终端宽度处理逻辑重写为简单的函数 - 强制导出 `COLUMNS` 环境变量以统一输出格式 - 优化了脚本内部执行步骤的视觉分隔效果
This commit is contained in:
@@ -63,4 +63,5 @@ if [[ "${BREWUP_DEBUG:-}" == "1" ]]; then
|
||||
head -n 1 "$TEMP"
|
||||
fi
|
||||
|
||||
export COLUMNS="130"
|
||||
bash "$TEMP" "$@"
|
||||
|
||||
@@ -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
|
||||
# 固定宽度,避免动态识别终端列数导致 prompt 重绘异常。
|
||||
export COLUMNS
|
||||
COLUMNS="$(terminal_width)"
|
||||
else
|
||||
unset COLUMNS
|
||||
fi
|
||||
|
||||
brew upgrade --cask --greedy --force
|
||||
|
||||
|
||||
Reference in New Issue
Block a user