#! /bin/bash
# Copyright (c) KylinSoft Co., Ltd. [2026].All rights reserved.
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"
PIP_INDEX="https://maven.kylinos.cn/repository/pypi-group/simple"

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
        # 尝试安装依赖
        $PYTHON_EXE -m pip install -r "$WORKDIR/requirements.txt" -i "$PIP_INDEX" --no-cache-dir

        if [ $? -eq 0 ]; then
            # 安装成功则创建标识文件。如果当前用户没权限写，提示 sudo
            touch "$INSTALLED_FLAG" 2>/dev/null || echo "警告：无法创建标识文件，下次运行可能仍需检查运行依赖。"
            echo "--- 环境初始化完成 ---"
        else
            echo -e "\e[31m[错误]\e[0m 依赖安装失败，请检查网络连接或权限。"
            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 "$@"