jb2api / start.sh
github-actions[bot]
Update from GitHub Actions
6fefda3
#!/bin/bash
# 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 "$@"