Files
wehub-resource-sync 9f2e1cd2af
Ruby / Ruby 4.0.5 (push) Failing after 5m13s
Ruby / Ruby 3.3.4 (push) Failing after 5m43s
Ruby / Ruby 2.6.8 (push) Failing after 16m2s
chore: import upstream snapshot with attribution
2026-07-13 12:33:07 +08:00

90 lines
4.1 KiB
Bash

# brew.sh — Homebrew install and CN mirror configuration
# Depends-On: colors.sh os.sh
# Requires-Vars: $SHELL_RC $USE_CN_MIRRORS $CN_CDN_BASE_URL
# Sets-Vars: (none)
# Include via: @include lib/brew.sh
# --------------------------------------------------------------------------
# Homebrew CN mirror URLs (Aliyun)
# --------------------------------------------------------------------------
CN_HOMEBREW_INSTALL_SCRIPT_URL="${CN_CDN_BASE_URL}/Homebrew/install/HEAD/install.sh"
CN_HOMEBREW_BREW_GIT_REMOTE="https://mirrors.aliyun.com/homebrew/brew.git"
CN_HOMEBREW_CORE_GIT_REMOTE="https://mirrors.aliyun.com/homebrew/homebrew-core.git"
CN_HOMEBREW_BOTTLE_DOMAIN="https://mirrors.aliyun.com/homebrew/homebrew-bottles"
CN_HOMEBREW_API_DOMAIN="https://mirrors.aliyun.com/homebrew-bottles/api"
HOMEBREW_INSTALL_SCRIPT_URL="https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh"
# --------------------------------------------------------------------------
# configure_homebrew_cn_mirrors — export env vars and persist to SHELL_RC
# Only runs when USE_CN_MIRRORS=true
# --------------------------------------------------------------------------
configure_homebrew_cn_mirrors() {
[ "$USE_CN_MIRRORS" = true ] || return 0
print_info "Configuring Homebrew CN mirrors..."
export HOMEBREW_INSTALL_FROM_API=1
export HOMEBREW_API_DOMAIN="$CN_HOMEBREW_API_DOMAIN"
export HOMEBREW_BREW_GIT_REMOTE="$CN_HOMEBREW_BREW_GIT_REMOTE"
export HOMEBREW_CORE_GIT_REMOTE="$CN_HOMEBREW_CORE_GIT_REMOTE"
export HOMEBREW_BOTTLE_DOMAIN="$CN_HOMEBREW_BOTTLE_DOMAIN"
if ! grep -q "HOMEBREW_BOTTLE_DOMAIN" "$SHELL_RC" 2>/dev/null; then
{
echo ""
echo "# Homebrew CN mirrors (added by openclacky installer)"
echo "export HOMEBREW_INSTALL_FROM_API=1"
echo "export HOMEBREW_API_DOMAIN=\"${CN_HOMEBREW_API_DOMAIN}\""
echo "export HOMEBREW_BREW_GIT_REMOTE=\"${CN_HOMEBREW_BREW_GIT_REMOTE}\""
echo "export HOMEBREW_CORE_GIT_REMOTE=\"${CN_HOMEBREW_CORE_GIT_REMOTE}\""
echo "export HOMEBREW_BOTTLE_DOMAIN=\"${CN_HOMEBREW_BOTTLE_DOMAIN}\""
} >> "$SHELL_RC"
print_success "Homebrew CN mirrors written to $SHELL_RC"
else
print_success "Homebrew CN mirrors already configured in $SHELL_RC"
fi
}
# --------------------------------------------------------------------------
# restore_homebrew_cn_mirrors — remove CN mirror lines from SHELL_RC
# --------------------------------------------------------------------------
restore_homebrew_cn_mirrors() {
if [ -n "$SHELL_RC" ] && [ -f "$SHELL_RC" ] && grep -q "HOMEBREW_BOTTLE_DOMAIN" "$SHELL_RC" 2>/dev/null; then
sed -i.bak '/# Homebrew CN mirrors (added by openclacky installer)/d' "$SHELL_RC"
sed -i.bak '/HOMEBREW_INSTALL_FROM_API/d' "$SHELL_RC"
sed -i.bak '/HOMEBREW_API_DOMAIN/d' "$SHELL_RC"
sed -i.bak '/HOMEBREW_BREW_GIT_REMOTE/d' "$SHELL_RC"
sed -i.bak '/HOMEBREW_CORE_GIT_REMOTE/d' "$SHELL_RC"
sed -i.bak '/HOMEBREW_BOTTLE_DOMAIN/d' "$SHELL_RC"
rm -f "${SHELL_RC}.bak"
unset HOMEBREW_BREW_GIT_REMOTE HOMEBREW_CORE_GIT_REMOTE HOMEBREW_BOTTLE_DOMAIN
print_success "Homebrew CN mirrors removed from $SHELL_RC"
else
print_info "Homebrew CN mirrors — nothing to restore"
fi
}
# --------------------------------------------------------------------------
# ensure_homebrew — install Homebrew if missing, add to PATH
# --------------------------------------------------------------------------
ensure_homebrew() {
if command_exists brew; then
print_success "Homebrew already installed"
return 0
fi
print_info "Installing Homebrew..."
local brew_url="$HOMEBREW_INSTALL_SCRIPT_URL"
[ "$USE_CN_MIRRORS" = true ] && brew_url="$CN_HOMEBREW_INSTALL_SCRIPT_URL"
if /bin/bash -c "$(curl -fsSL "$brew_url")"; then
# Add Homebrew to PATH (Apple Silicon default path)
echo 'export PATH="/opt/homebrew/bin:$PATH"' >> "$SHELL_RC"
export PATH="/opt/homebrew/bin:$PATH"
print_success "Homebrew installed"
else
print_error "Failed to install Homebrew"
return 1
fi
}