#!/bin/bash

# 定义颜色常量
RED='\033[31m'
GREEN='\033[32m'
RESET='\033[0m'

# 查找项目根目录（包含 wsgi.py 的目录）
find_project_root() {
    local current_dir="$PWD"
    while true; do
        if [[ -f "$current_dir/wsgi.py" ]]; then
            echo "$current_dir"
            return 0
        fi
        local parent_dir=$(dirname "$current_dir")
        if [[ "$parent_dir" == "$current_dir" ]]; then  # 到达根目录
            break
        fi
        current_dir="$parent_dir"
    done
    echo -e "${RED}错误：未找到项目根目录（缺少 wsgi.py 文件）${RESET}" >&2
    exit 1
}

# 获取项目名称（根目录名称）
get_project_name() {
    local project_root="$1"
    basename "$project_root"  # 更可靠的目录名提取方式
}

# 主函数
main() {
    # 1. 查找项目根目录
    local project_root=$(find_project_root)
    
    # 2. 获取项目名称
    local project_name=$(get_project_name "$project_root")
    
    # 3. 获取用户输入的端口号（严格校验）
    local port=""
    while [[ -z "$port" || ! "$port" =~ ^[0-9]+$ ]]; do
        echo -n "请输入 uWSGI 监听端口（例如: 8000）: "
        read -r port
        if [[ ! "$port" =~ ^[0-9]+$ ]]; then
            echo -e "${RED}错误：端口号必须为有效数字，请重新输入。${RESET}" >&2
            port=""
        fi
    done
    
    # 4. 生成配置文件路径（项目根目录/项目名.ini）
    local config_file="${project_root}/${project_name}.ini"
    
    # 5. 生成配置内容（简化输出，不显示具体内容）
    {
        echo "[uwsgi]"
        echo "socket = 127.0.0.1:${port}"
        echo "chdir = ${project_root}"
        echo "wsgi-file = ${project_name}/wsgi.py"
        echo "processes = 4"
        echo "threads = 2"
        echo "master = true"
        echo "vacuum = true"
        echo "virtualenv = /envs/${project_name}"
        echo "python-path = ${project_root}"
    } > "$config_file"
    
    # 6. 输出结果（仅显示路径，不显示配置内容）
    echo -e "\n${GREEN}✔ 配置文件已生成：${config_file}${RESET}"
}

# 执行主函数
main