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"
|
head -n 1 "$TEMP"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
export COLUMNS="130"
|
||||||
bash "$TEMP" "$@"
|
bash "$TEMP" "$@"
|
||||||
|
|||||||
@@ -37,59 +37,10 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# --- 终端宽度和打印函数 ---
|
# --- 终端宽度和打印函数 ---
|
||||||
DEFAULT_FALLBACK_WIDTH="130"
|
TERMINAL_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() {
|
terminal_width() {
|
||||||
local width=""
|
printf "%s" "$TERMINAL_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"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
separator() { local width; width=$(terminal_width); printf '=%.0s' $(seq 1 "$width"); printf "\n"; }
|
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
|
export HOMEBREW_COLOR=1
|
||||||
|
|
||||||
# --- 终端宽度处理 ---
|
# --- 终端宽度处理 ---
|
||||||
# 交互式终端里让 brew 直接读取当前 TTY,避免 sudo 时间戳因新建 PTY 失效。
|
# 固定宽度,避免动态识别终端列数导致 prompt 重绘异常。
|
||||||
if [[ -n "$FIXED_TERMINAL_WIDTH" || ! -t 1 ]]; then
|
export COLUMNS
|
||||||
export COLUMNS
|
COLUMNS="$(terminal_width)"
|
||||||
COLUMNS="$(terminal_width)"
|
|
||||||
else
|
|
||||||
unset COLUMNS
|
|
||||||
fi
|
|
||||||
|
|
||||||
brew upgrade --cask --greedy --force
|
brew upgrade --cask --greedy --force
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user