refactor(homebrew): 重构脚本中的颜色输出和错误处理功能
- 添加了 RED 颜色常量定义和相应的颜色代码调整 - 替换了原有的 echo 命令为新的打印函数(如 print_error、print_warning 等) - 实现了统一的错误消息输出格式,使用 print_error 函数 - 优化了颜色输出的实现方式,使用 printf 替代 echo -e - 在 bootstrap 脚本中也实现了类似的颜色输出和错误处理函数 - 统一了脚本中的消息输出格式和样式
This commit is contained in:
@@ -2,6 +2,26 @@
|
||||
# 目标:下载远程升级脚本、执行、销毁临时文件
|
||||
set -euo pipefail
|
||||
|
||||
if [[ -t 1 ]]; then
|
||||
RED='\033[31m'
|
||||
YELLOW='\033[33m'
|
||||
CYAN='\033[36m'
|
||||
NC='\033[0m'
|
||||
else
|
||||
RED=''
|
||||
YELLOW=''
|
||||
CYAN=''
|
||||
NC=''
|
||||
fi
|
||||
|
||||
print_info() {
|
||||
printf '%b%s%b\n' "$CYAN" "$*" "$NC"
|
||||
}
|
||||
|
||||
print_error() {
|
||||
printf '%bError:%b %s\n' "$RED" "$NC" "$*" >&2
|
||||
}
|
||||
|
||||
REMOTE="https://git.orionc.me/orion/script/raw/branch/main/homebrew/brew-upgrade-manager.sh"
|
||||
TEMP_DIR="$(mktemp -d "${TMPDIR:-/tmp}/brew-upgrade-manager.XXXXXX")"
|
||||
TEMP="$TEMP_DIR/brew-upgrade-manager.sh"
|
||||
@@ -43,7 +63,7 @@ if curl --help all 2>/dev/null | grep -q -- '--retry-all-errors'; then
|
||||
curl_retry_all_errors+=(--retry-all-errors)
|
||||
fi
|
||||
|
||||
echo "正在下载远程脚本..."
|
||||
print_info "正在下载远程脚本..."
|
||||
curl -f -sSL \
|
||||
--connect-timeout "$connect_timeout" \
|
||||
--speed-limit 1024 \
|
||||
@@ -52,16 +72,16 @@ curl -f -sSL \
|
||||
--retry-delay "$download_retry_delay" \
|
||||
"${curl_retry_all_errors[@]}" \
|
||||
"$REMOTE" -o "$TEMP"
|
||||
[[ -s "$TEMP" ]] || { echo "远程脚本为空,已停止执行。" >&2; exit 1; }
|
||||
[[ -s "$TEMP" ]] || { print_error "远程脚本为空,已停止执行。"; exit 1; }
|
||||
|
||||
if [[ -n "${BREWUP_SHA256:-}" ]]; then
|
||||
echo "正在校验脚本 SHA256..."
|
||||
print_info "正在校验脚本 SHA256..."
|
||||
actual_sha256="$(shasum -a 256 "$TEMP")"
|
||||
actual_sha256="${actual_sha256%% *}"
|
||||
if [[ "$actual_sha256" != "$BREWUP_SHA256" ]]; then
|
||||
echo "脚本 SHA256 不匹配,已停止执行。" >&2
|
||||
echo "Expected: $BREWUP_SHA256" >&2
|
||||
echo "Actual: $actual_sha256" >&2
|
||||
print_error "脚本 SHA256 不匹配,已停止执行。"
|
||||
printf '%bExpected:%b %s\n' "$YELLOW" "$NC" "$BREWUP_SHA256" >&2
|
||||
printf '%bActual:%b %s\n' "$RED" "$NC" "$actual_sha256" >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
@@ -69,7 +89,7 @@ fi
|
||||
bash -n "$TEMP"
|
||||
|
||||
if [[ "${BREWUP_DEBUG:-0}" == "1" ]]; then
|
||||
echo "Downloaded script first line:"
|
||||
print_info "Downloaded script first line:"
|
||||
head -n 1 "$TEMP"
|
||||
fi
|
||||
|
||||
@@ -86,17 +106,18 @@ EOF
|
||||
export BREWUP_KEYCHAIN_ACCOUNT="$CURRENT_USER"
|
||||
|
||||
if ! /usr/bin/security find-generic-password -a "$CURRENT_USER" -s "$KEYCHAIN_SERVICE" -w >/dev/null 2>&1; then
|
||||
printf "首次使用:请输入一次 sudo 密码,将保存到 macOS Keychain:"
|
||||
printf '%b首次使用:请输入一次 sudo 密码,将保存到 macOS Keychain:%b' "$YELLOW" "$NC"
|
||||
IFS= read -r -s BREWUP_SUDO_PASSWORD
|
||||
printf '\n'
|
||||
/usr/bin/security add-generic-password -U -a "$CURRENT_USER" -s "$KEYCHAIN_SERVICE" -w "$BREWUP_SUDO_PASSWORD" >/dev/null
|
||||
unset BREWUP_SUDO_PASSWORD
|
||||
fi
|
||||
|
||||
echo "正在通过 Keychain 准备 sudo 凭据..."
|
||||
print_info "正在通过 Keychain 准备 sudo 凭据..."
|
||||
if ! sudo -A -v; then
|
||||
echo "Keychain 中的 sudo 密码不可用,请删除后重新保存:" >&2
|
||||
echo " security delete-generic-password -a \"$CURRENT_USER\" -s \"$KEYCHAIN_SERVICE\"" >&2
|
||||
print_error "Keychain 中的 sudo 密码不可用,请删除后重新保存:"
|
||||
printf ' %bsecurity delete-generic-password -a %q -s %q%b\n' \
|
||||
"$CYAN" "$CURRENT_USER" "$KEYCHAIN_SERVICE" "$NC" >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user