Spaces:
Sleeping
Sleeping
| # JetBrains AI Proxy 启动脚本 | |
| # 支持自动配置发现和多种配置方式 | |
| set -e | |
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | |
| cd "$SCRIPT_DIR" | |
| # 颜色定义 | |
| RED='\033[0;31m' | |
| GREEN='\033[0;32m' | |
| YELLOW='\033[1;33m' | |
| BLUE='\033[0;34m' | |
| NC='\033[0m' # No Color | |
| # 打印带颜色的消息 | |
| print_info() { | |
| echo -e "${BLUE}ℹ️ $1${NC}" | |
| } | |
| print_success() { | |
| echo -e "${GREEN}✅ $1${NC}" | |
| } | |
| print_warning() { | |
| echo -e "${YELLOW}⚠️ $1${NC}" | |
| } | |
| print_error() { | |
| echo -e "${RED}❌ $1${NC}" | |
| } | |
| # 检查可执行文件 | |
| check_executable() { | |
| if [ ! -f "./jetbrains-ai-proxy" ]; then | |
| print_error "可执行文件 './jetbrains-ai-proxy' 不存在" | |
| print_info "请先编译项目: go build -o jetbrains-ai-proxy" | |
| exit 1 | |
| fi | |
| if [ ! -x "./jetbrains-ai-proxy" ]; then | |
| print_info "设置可执行权限..." | |
| chmod +x ./jetbrains-ai-proxy | |
| fi | |
| } | |
| # 检查配置 | |
| check_configuration() { | |
| print_info "检查配置..." | |
| # 检查是否存在配置文件 | |
| config_files=( | |
| "config.json" | |
| "config/config.json" | |
| "configs/config.json" | |
| ".config/jetbrains-ai-proxy.json" | |
| ) | |
| config_found=false | |
| for config_file in "${config_files[@]}"; do | |
| if [ -f "$config_file" ]; then | |
| print_success "找到配置文件: $config_file" | |
| config_found=true | |
| break | |
| fi | |
| done | |
| # 检查环境变量 | |
| env_configured=false | |
| if [ -n "$JWT_TOKENS" ] || [ -n "$JWT_TOKEN" ]; then | |
| if [ -n "$BEARER_TOKEN" ]; then | |
| print_success "检测到环境变量配置" | |
| env_configured=true | |
| else | |
| print_warning "检测到JWT tokens但缺少BEARER_TOKEN环境变量" | |
| fi | |
| fi | |
| # 检查.env文件 | |
| if [ -f ".env" ]; then | |
| print_success "找到 .env 文件" | |
| env_configured=true | |
| fi | |
| # 如果没有找到任何配置,生成示例配置 | |
| if [ "$config_found" = false ] && [ "$env_configured" = false ]; then | |
| print_warning "未找到配置文件或环境变量配置" | |
| print_info "生成示例配置文件..." | |
| if ./jetbrains-ai-proxy --generate-config; then | |
| print_success "示例配置文件已生成" | |
| print_info "请编辑 config/config.json 或 .env.example 文件" | |
| print_info "然后重新运行此脚本" | |
| exit 0 | |
| else | |
| print_error "生成示例配置失败" | |
| exit 1 | |
| fi | |
| fi | |
| } | |
| # 显示配置信息 | |
| show_config() { | |
| print_info "当前配置信息:" | |
| ./jetbrains-ai-proxy --print-config | |
| } | |
| # 启动服务 | |
| start_service() { | |
| print_info "启动 JetBrains AI Proxy..." | |
| # 如果有命令行参数,直接传递 | |
| if [ $# -gt 0 ]; then | |
| print_info "使用命令行参数: $*" | |
| exec ./jetbrains-ai-proxy "$@" | |
| else | |
| # 使用配置文件启动 | |
| exec ./jetbrains-ai-proxy | |
| fi | |
| } | |
| # 显示帮助信息 | |
| show_help() { | |
| echo "JetBrains AI Proxy 启动脚本" | |
| echo "" | |
| echo "用法:" | |
| echo " $0 # 使用配置文件启动" | |
| echo " $0 [options] # 使用命令行参数启动" | |
| echo " $0 --help # 显示帮助信息" | |
| echo " $0 --config # 显示当前配置" | |
| echo " $0 --generate # 生成示例配置文件" | |
| echo "" | |
| echo "配置方式 (优先级从高到低):" | |
| echo " 1. 命令行参数" | |
| echo " 2. 环境变量" | |
| echo " 3. 配置文件 (config.json, config/config.json 等)" | |
| echo " 4. 默认值" | |
| echo "" | |
| echo "示例:" | |
| echo " # 生成配置文件" | |
| echo " $0 --generate" | |
| echo "" | |
| echo " # 使用配置文件启动" | |
| echo " $0" | |
| echo "" | |
| echo " # 使用命令行参数启动" | |
| echo " $0 -c \"jwt1,jwt2,jwt3\" -k \"bearer_token\" -s random" | |
| echo "" | |
| echo " # 使用环境变量启动" | |
| echo " export JWT_TOKENS=\"jwt1,jwt2,jwt3\"" | |
| echo " export BEARER_TOKEN=\"your_token\"" | |
| echo " $0" | |
| echo "" | |
| echo "管理端点:" | |
| echo " GET /health - 健康检查" | |
| echo " GET /config - 配置信息" | |
| echo " GET /stats - 统计信息" | |
| echo " POST /reload - 重载配置" | |
| } | |
| # 主函数 | |
| main() { | |
| echo "🚀 JetBrains AI Proxy 启动脚本" | |
| echo "================================" | |
| # 处理特殊参数 | |
| case "${1:-}" in | |
| --help|-h) | |
| show_help | |
| exit 0 | |
| ;; | |
| --config) | |
| check_executable | |
| show_config | |
| exit 0 | |
| ;; | |
| --generate) | |
| check_executable | |
| ./jetbrains-ai-proxy --generate-config | |
| exit 0 | |
| ;; | |
| esac | |
| # 检查可执行文件 | |
| check_executable | |
| # 检查配置 | |
| check_configuration | |
| # 启动服务 | |
| start_service "$@" | |
| } | |
| # 捕获中断信号 | |
| trap 'print_info "正在停止服务..."; exit 0' INT TERM | |
| # 运行主函数 | |
| main "$@" | |