154 lines
4.6 KiB
Bash
Executable File
154 lines
4.6 KiB
Bash
Executable File
#!/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"
|