mgmt/configuration/zsh/quick-install.sh

154 lines
4.6 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 快速安装脚本 - 从 Gitea 仓库直接安装 ZSH 配置
# 用法: curl -fsSL https://your-gitea.com/ben/mgmt/raw/branch/main/configuration/zsh/quick-install.sh | bash
set -euo pipefail
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
log_info() {
echo -e "${BLUE}[INFO]${NC} $1"
}
log_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# Gitea 仓库信息
GITEA_URL="https://ben:8d7d70f324796be650b79415303c31f567bf459b@gitea.tailnet-68f9.ts.net/ben/mgmt.git"
MGMT_DIR="/root/mgmt"
log_info "开始快速安装 ZSH 配置..."
# 检查 root 权限
if [[ $EUID -ne 0 ]]; then
log_error "此脚本需要 root 权限运行"
exit 1
fi
# 克隆或更新仓库
if [[ -d "$MGMT_DIR" ]]; then
log_info "更新现有仓库..."
cd "$MGMT_DIR"
git pull origin main
else
log_info "克隆仓库..."
git clone "$GITEA_URL" "$MGMT_DIR"
cd "$MGMT_DIR"
fi
# 询问用户是否使用代理
echo ""
log_info "网络环境检测:"
echo " 检测到可能需要代理访问外网资源(如 GitHub"
echo ""
log_info "是否使用代理进行安装?"
echo " Y - 使用代理安装(推荐,确保下载成功)"
echo " N - 直连安装(如果网络环境良好)"
echo ""
while true; do
read -p "请选择 (Y/n): " choice
case $choice in
[Yy]|"")
log_info "选择使用代理安装"
PROXY_URL="http://istoreos.tailnet-68f9.ts.net:1082"
# 测试代理连接
if curl -s --connect-timeout 5 --proxy "$PROXY_URL" https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh >/dev/null 2>&1; then
log_success "代理连接正常,设置代理环境"
export http_proxy="$PROXY_URL"
export https_proxy="$PROXY_URL"
export HTTP_PROXY="$PROXY_URL"
export HTTPS_PROXY="$PROXY_URL"
# 创建代理配置文件
cat > "$MGMT_DIR/configuration/proxy.env" << EOF
# Proxy Configuration for istoreos.tailnet-68f9.ts.net:1082
export http_proxy=${PROXY_URL}
export https_proxy=${PROXY_URL}
export HTTP_PROXY=${PROXY_URL}
export HTTPS_PROXY=${PROXY_URL}
export no_proxy=localhost,127.0.0.1,::1,.local,.tailnet-68f9.ts.net
export NO_PROXY=localhost,127.0.0.1,::1,.local,.tailnet-68f9.ts.net
export ALL_PROXY=${PROXY_URL}
export all_proxy=${PROXY_URL}
export GIT_HTTP_PROXY=${PROXY_URL}
export GIT_HTTPS_PROXY=${PROXY_URL}
export CURL_PROXY=${PROXY_URL}
export WGET_PROXY=${PROXY_URL}
EOF
else
log_error "代理连接失败,无法继续安装"
exit 1
fi
break
;;
[Nn])
log_info "选择直连安装"
# 测试直连
if curl -s --connect-timeout 5 https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh >/dev/null 2>&1; then
log_success "直连正常,开始安装"
else
log_error "直连失败,无法继续安装"
exit 1
fi
break
;;
*)
log_warning "无效选择,请输入 Y 或 N"
;;
esac
done
# 运行安装脚本
log_info "运行 ZSH 配置安装脚本..."
chmod +x "$MGMT_DIR/configuration/zsh/install-zsh-config.sh"
"$MGMT_DIR/configuration/zsh/install-zsh-config.sh"
log_success "快速安装完成!"
# 如果创建了代理配置,询问是否保持
if [[ -f "$MGMT_DIR/configuration/proxy.env" ]]; then
echo ""
log_info "安装完成!代理已临时开启用于安装。"
echo ""
log_info "是否保持代理开启?"
echo " Y - 保持代理开启(推荐,方便访问外网)"
echo " N - 关闭代理(如果不需要访问外网)"
echo ""
while true; do
read -p "请选择 (Y/n): " choice
case $choice in
[Yy]|"")
log_success "代理保持开启"
log_info "使用 'proxy-status' 查看代理状态"
log_info "使用 'proxy-toggle' 切换代理状态"
break
;;
[Nn])
log_info "关闭代理..."
rm -f "$MGMT_DIR/configuration/proxy.env"
log_success "代理已关闭"
break
;;
*)
log_warning "无效选择,请输入 Y 或 N"
;;
esac
done
fi
log_info "请重新登录或运行: source ~/.zshrc"