#!/bin/bash
# Git pre-commit hook - 版本管理
# 提交前弹出版本管理界面（GUI弹窗 或 浏览器页面）

export LC_ALL=zh_CN.utf8
export LANG=zh_CN.utf8

PROJECT_ROOT="$(git rev-parse --show-toplevel)"
VERSION_MANAGER="$PROJECT_ROOT/version/scripts/version_manager.py"
GUI_VERSION_MANAGER="$PROJECT_ROOT/version/scripts/gui_version_manager.py"
WEB_VERSION_MANAGER="$PROJECT_ROOT/version/scripts/web_version_manager.py"

RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
CYAN='\033[0;36m'
NC='\033[0m'

if [ ! -f "$VERSION_MANAGER" ]; then
    exit 0
fi

CHANGED_FILES=$(git diff --cached --name-only | grep -v -E "(version\.json|版本迭代日志\.md|package\.json)")
if [ -z "$CHANGED_FILES" ]; then
    echo -e "${GREEN}✅ 无代码变更，跳过版本检查${NC}"
    exit 0
fi

echo -e "${CYAN}🔍 检查版本管理...${NC}"
echo -e "${YELLOW}📝 检测到代码变更:${NC}"
echo "$CHANGED_FILES" | sed 's/^/  /'

PYTHON_CMD="python3"
if [ -f "/usr/bin/python3" ]; then
    PYTHON_CMD="/usr/bin/python3"
fi

IS_REMOTE_IDE="false"
if [ -n "$VSCODE_IPC_HOOK_CLI" ]; then
    IS_REMOTE_IDE="true"
elif [ -n "$BROWSER" ] && echo "$BROWSER" | grep -qE '(windsurf-server|vscode-server|cursor-server)'; then
    IS_REMOTE_IDE="true"
fi

run_version_manager() {
    local exit_code=$1
    if [ $exit_code -eq 0 ]; then
        echo -e "${GREEN}✅ 版本管理完成${NC}"
        exit 0
    elif [ $exit_code -eq 1 ]; then
        echo -e "${RED}❌ 用户取消了提交${NC}"
        exit 1
    else
        echo -e "${YELLOW}⚠️  版本管理器异常，继续提交${NC}"
        exit 0
    fi
}

if [ "$IS_REMOTE_IDE" = "true" ] && [ -f "$WEB_VERSION_MANAGER" ] && command -v "$PYTHON_CMD" >/dev/null 2>&1; then
    echo -e "${CYAN}🌐 检测到远程IDE环境，启动 Web 版本管理器...${NC}"
    "$PYTHON_CMD" "$WEB_VERSION_MANAGER"
    run_version_manager $?

elif [ -n "$DISPLAY" ] && [ -z "$SSH_CLIENT" ] && command -v "$PYTHON_CMD" >/dev/null 2>&1 && [ -f "$GUI_VERSION_MANAGER" ]; then
    echo -e "${CYAN}🖥️  检测到图形环境，启动图形化版本管理器...${NC}"
    "$PYTHON_CMD" "$GUI_VERSION_MANAGER" --check-changes
    run_version_manager $?

else
    echo -e "${YELLOW}⚠️  非交互环境，跳过版本更新（请在终端中运行 git commit）${NC}"
    exit 0
fi
