#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
配置文件创建工具
用于测试和创建默认配置文件
"""

import os
import sys
import configparser
from pathlib import Path

def create_default_config():
    """创建默认配置文件"""
    # 确定配置文件位置
    if getattr(sys, 'frozen', False):
        # 打包后的环境
        app_dir = Path(sys.executable).parent
    else:
        # 开发环境
        app_dir = Path(__file__).parent.parent.parent
    
    config_file = app_dir / "config.ini"
    
    print(f"创建配置文件: {config_file}")
    
    # 创建配置
    config = configparser.ConfigParser()
    
    # 数据库配置
    config['database'] = {
        'username': 'root',
        'password': 'root',
        'host': 'localhost',
        'port': '3306',
        'database': 'vwed_task'
    }
    
    # API配置
    config['api'] = {
        'tf_api_base_url': 'http://111.231.146.230:4080/jeecg-boot'
    }
    
    # 服务配置
    config['service'] = {
        'port': '8000',
        'host': '0.0.0.0'
    }
    
    # 写入配置文件
    try:
        with open(str(config_file), 'w', encoding='utf-8') as f:
            config.write(f)
        
        print("✓ 配置文件创建成功")
        
        # 显示配置内容
        print("\n配置内容:")
        with open(str(config_file), 'r', encoding='utf-8') as f:
            print(f.read())
        
        return True
    except Exception as e:
        print(f"✗ 配置文件创建失败: {e}")
        return False

def read_config():
    """读取配置文件"""
    if getattr(sys, 'frozen', False):
        app_dir = Path(sys.executable).parent
    else:
        app_dir = Path(__file__).parent.parent.parent
    
    config_file = app_dir / "config.ini"
    
    if not config_file.exists():
        print(f"配置文件不存在: {config_file}")
        return False
    
    try:
        config = configparser.ConfigParser()
        config.read(str(config_file), encoding='utf-8')
        
        print(f"读取配置文件: {config_file}")
        
        # 显示所有配置
        for section_name in config.sections():
            print(f"\n[{section_name}]")
            for key, value in config[section_name].items():
                print(f"{key} = {value}")
        
        return True
    except Exception as e:
        print(f"读取配置文件失败: {e}")
        return False

def test_config_loading():
    """测试配置加载"""
    print("测试配置加载...")
    
    try:
        from startup_loader import load_startup_config
        
        result = load_startup_config()
        if result:
            print("✓ 配置加载成功")
            
            # 显示环境变量
            env_vars = ['DB_USER', 'DB_PASSWORD', 'DB_HOST', 'TF_API_BASE_URL']
            print("\n环境变量:")
            for var in env_vars:
                value = os.environ.get(var, '未设置')
                print(f"{var} = {value}")
            
            return True
        else:
            print("✗ 配置加载失败")
            return False
    except ImportError as e:
        print(f"✗ 无法导入配置加载器: {e}")
        return False
    except Exception as e:
        print(f"✗ 配置加载测试异常: {e}")
        return False

def main():
    """主函数"""
    print("VWED配置工具测试")
    print("=" * 40)
    
    import argparse
    parser = argparse.ArgumentParser(description="配置文件管理工具")
    parser.add_argument("--create", action="store_true", help="创建默认配置文件")
    parser.add_argument("--read", action="store_true", help="读取配置文件")
    parser.add_argument("--test", action="store_true", help="测试配置加载")
    parser.add_argument("--all", action="store_true", help="执行所有操作")
    
    args = parser.parse_args()
    
    if args.all or len(sys.argv) == 1:
        # 执行所有操作
        operations = [
            ("创建配置文件", create_default_config),
            ("读取配置文件", read_config),
            ("测试配置加载", test_config_loading)
        ]
    else:
        operations = []
        if args.create:
            operations.append(("创建配置文件", create_default_config))
        if args.read:
            operations.append(("读取配置文件", read_config))
        if args.test:
            operations.append(("测试配置加载", test_config_loading))
    
    results = []
    for op_name, op_func in operations:
        print(f"\n=== {op_name} ===")
        try:
            result = op_func()
            results.append((op_name, result))
        except Exception as e:
            print(f"操作失败: {e}")
            results.append((op_name, False))
    
    # 总结
    if results:
        print("\n" + "=" * 40)
        print("操作结果:")
        all_success = True
        for op_name, result in results:
            status = "✓" if result else "✗"
            print(f"{status} {op_name}")
            if not result:
                all_success = False
        
        return 0 if all_success else 1
    else:
        print("没有执行任何操作")
        return 0

if __name__ == "__main__":
    exit(main())