#!/bin/bash

# 设置颜色输出
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color

# 获取脚本所在目录的绝对路径
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

echo -e "${YELLOW}正在设置MCP服务...${NC}"

# 检查虚拟环境是否存在，如果不存在则创建
if [ ! -d "$SCRIPT_DIR/venv" ]; then
    echo -e "${YELLOW}创建虚拟环境...${NC}"
    python3 -m venv "$SCRIPT_DIR/venv"
fi

# 激活虚拟环境
source "$SCRIPT_DIR/venv/bin/activate"

# 安装依赖
echo -e "${YELLOW}安装依赖...${NC}"
pip install fastmcp

# 创建日志目录
mkdir -p "$SCRIPT_DIR/logs"

# 创建开机自启动配置
echo -e "${YELLOW}设置开机自启动...${NC}"
LAUNCH_AGENTS_DIR="$HOME/Library/LaunchAgents"
PLIST_FILE="$LAUNCH_AGENTS_DIR/com.feedback.mcp.plist"
mkdir -p "$LAUNCH_AGENTS_DIR"

# 创建 plist 文件
cat > "$PLIST_FILE" << EOL
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.feedback.mcp</string>
    <key>ProgramArguments</key>
    <array>
        <string>$SCRIPT_DIR/venv/bin/python</string>
        <string>$SCRIPT_DIR/server.py</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
    <key>WorkingDirectory</key>
    <string>$SCRIPT_DIR</string>
    <key>StandardOutPath</key>
    <string>$SCRIPT_DIR/logs/mcp.log</string>
    <key>StandardErrorPath</key>
    <string>$SCRIPT_DIR/logs/mcp.error.log</string>
    <key>EnvironmentVariables</key>
    <dict>
        <key>PATH</key>
        <string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
    </dict>
</dict>
</plist>
EOL

# 设置正确的权限
chmod 644 "$PLIST_FILE"

# 卸载可能存在的旧配置
launchctl unload "$PLIST_FILE" 2>/dev/null || true

# 加载新配置
echo -e "${YELLOW}启用开机自启动...${NC}"
launchctl load "$PLIST_FILE"

# 检查服务是否成功启动
sleep 2
PID=$(ps aux | grep "[p]ython.*server.py" | awk '{print $2}')

if [ ! -z "$PID" ]; then
    echo -e "${GREEN}MCP服务已成功启动并设置为开机自启动！${NC}"
    echo -e "${GREEN}进程ID: $PID${NC}"
    echo -e "${YELLOW}日志文件位置:${NC}"
    echo -e "  标准输出: $SCRIPT_DIR/logs/mcp.log"
    echo -e "  错误日志: $SCRIPT_DIR/logs/mcp.error.log"
    echo -e "\n${GREEN}✓ 开机自启动已设置成功！${NC}"
else
    echo -e "${RED}启动失败，请检查日志文件获取详细信息。${NC}"
    exit 1
fi 