#! /bin/bash
# Copyright (c) KylinSoft Co., Ltd. [2026].All rights reserved.
# Non open source,The copyright belongs to KylinSoft Co.,Ltd.
co_d="\e[0m"
co_r="\e[31m"

WORKDIR="/usr/share/kyCopilot"
VENV_DIR="$WORKDIR/venv"
SYSTEM_PYTHON="/usr/bin/python3"
PYTHON_EXE="$VENV_DIR/bin/python3"

INSTALLED_FLAG="$WORKDIR/.deps_installed"

# 1. 权限与目录检查
if [ ! -d "$WORKDIR" ]; then
    echo -e "\e[31m[错误]\e[0m 工作目录 $WORKDIR 不存在。"
    exit 1
fi

# 2. 创建虚拟运行环境
if [ ! -x "$PYTHON_EXE" ]; then
    echo "--- 正在创建虚拟运行环境 ---"

    "$SYSTEM_PYTHON" -m venv "$VENV_DIR"

    if [ $? -ne 0 ]; then
        echo -e "\e[31m[错误]\e[0m 虚拟环境创建失败"
        exit 1
    fi
fi

# 3. 首次运行依赖安装逻辑
if [ ! -f "$INSTALLED_FLAG" ]; then
    echo "--- 正在进行首次运行环境初始化 ---"

    # 检查 requirements.txt
    if [ -f "$WORKDIR/requirements.txt" ]; then
        # 构建 pip 命令参数（使用数组避免空格/引号问题）
        PIP_ARGS=(
            "$PYTHON_EXE" "-m" "pip" "install"
            "-r" "$WORKDIR/requirements.txt"
            "--no-cache-dir"
            "--timeout" "30"
        )
        # 若用户配置了环境变量，显式追加索引参数
        if [[ -n "${PIP_INDEX_URL:-}" ]]; then
            PIP_ARGS+=("-i" "$PIP_INDEX_URL")
        fi
        # 执行安装
        "${PIP_ARGS[@]}"
        if [ $? -eq 0 ]; then
            # 安装成功则创建标识文件。如果当前用户没权限写，提示 sudo
            touch "$INSTALLED_FLAG" 2>/dev/null || echo "警告：无法创建标识文件，下次运行可能仍需检查运行依赖。"
            echo "--- 环境初始化完成 ---"
        else
            echo -e "${co_r}[错误]${co_d} 依赖安装失败（网络不通或默认源不可达）。"
            echo ""
            echo -e "${co_r}[解决方案]${co_d} 请配置可用的 PyPI 镜像源环境变量后重试："
            echo "  临时生效：export PIP_INDEX_URL='https://你的镜像源地址'"
            echo "  永久生效：echo 'export PIP_INDEX_URL=...' >> ~/.bashrc && source ~/.bashrc"
            echo "  配置完成后，再次运行即可。"
            exit 1
        fi
    else
        echo "警告：未找到 requirements.txt，跳过依赖安装。"
    fi
fi

# 4. 系统组件检查 (ollama)
if ! rpm -qa | grep -q 'ollama'; then
    echo -e "\e[33m[提示]\e[0m 系统未检测到 ollama，请确保已手动安装以获取完整 AI 支持。"
fi

# 5. 执行程序
cd "$WORKDIR" || exit 1
# 确保混淆后的 .so 能被加载
export PYTHONPATH="$WORKDIR:$PYTHONPATH"

# 使用 exec 转发所有参数 ($@)
exec $PYTHON_EXE main.py "$@"