#!/bin/bash # ============================================================ # frps-console 部署入口(前置引导脚本) # 此脚本固定在 main 分支,永不变化。 # 职责:引导用户选择通道,拉取对应分支的 deploy.sh 并执行 # # 用法: # curl -sSL https://git.whitetop.xyz/.../run-deploy.sh | sudo bash # curl -sSL https://git.whitetop.xyz/.../run-deploy.sh | sudo bash -s -- --channel preview # ============================================================ set -e if [ -t 1 ]; then RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m' BLUE='\033[0;34m'; CYAN='\033[0;36m'; MAGENTA='\033[0;35m'; NC='\033[0m' else RED=''; GREEN=''; YELLOW=''; BLUE=''; CYAN=''; MAGENTA=''; NC='' fi print_info() { echo -e "${BLUE}[INFO]${NC} $1"; } print_error() { echo -e "${RED}[✗]${NC} $1"; } REPO_URL="https://git.whitetop.xyz/lxh2875931338/frps-console.git" WORK_DIR="/tmp/frps-console-deploy" CHANNEL="" BRANCH="" parse_args() { for arg in "$@"; do case $arg in --channel) shift; CHANNEL="$1" ;; --channel=*) CHANNEL="${arg#*=}" ;; --help|-h) echo "用法: curl .../run-deploy.sh | sudo bash -s -- [选项]" echo "" echo "选项:" echo " --channel lts 使用 LTS 通道 (main 分支)" echo " --channel preview 使用 Preview 通道 (test 分支)" echo " --help, -h 显示帮助信息" exit 0 ;; *) print_error "未知选项: $arg" echo "使用 --help 查看帮助" exit 1 ;; esac done } select_channel() { if [ -n "$CHANNEL" ]; then if [ "$CHANNEL" != "lts" ] && [ "$CHANNEL" != "preview" ]; then print_error "无效通道: $CHANNEL (仅支持 lts / preview)" exit 1 fi BRANCH="$([ "$CHANNEL" = "preview" ] && echo "test" || echo "main")" print_info "使用命令行参数: ${CHANNEL} 通道 (${BRANCH} 分支)" return fi echo "" echo -e "${CYAN}请选择部署通道:${NC}" echo " 1. LTS (稳定版,生产推荐) [默认] → main 分支" echo " 2. Preview (技术预览版,包含新特性) → test 分支" echo "" read -p "请选择 [1]: " CHANNEL_INPUT /dev/null || true echo -e "${MAGENTA}════════════════════════════════════════════════════════${NC}" echo -e "${MAGENTA} frps-console 部署入口${NC}" echo -e "${MAGENTA}════════════════════════════════════════════════════════${NC}" echo "" parse_args "$@" select_channel fetch_and_run "$@" } main "$@"