#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Production build script - Automatically disable logging functionality
"""

import os
import shutil
import subprocess
import sys

# Ensure script runs in correct directory
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
os.chdir(SCRIPT_DIR)
print(f"Working directory: {SCRIPT_DIR}")

def disable_logging():
    """Disable all logging functionality"""
    print("Disabling logging functionality...")
    
    # Backup original files
    files_to_backup = ['main.py', 'exe_file_logger.py']
    for file_name in files_to_backup:
        if os.path.exists(file_name):
            shutil.copy(file_name, f'{file_name}.backup')
            print(f"Backed up {file_name}")
    
    # 1. Modify main.py - comment out logging initialization
    if os.path.exists('main.py'):
        with open('main.py', 'r', encoding='utf-8') as f:
            content = f.read()
        
        # Comment out logging related imports and initialization
        content = content.replace(
            'from exe_file_logger import setup_file_logging, log_to_file',
            '# from exe_file_logger import setup_file_logging, log_to_file  # Production disabled'
        ).replace(
            'setup_file_logging()',
            '# setup_file_logging()  # Production disabled'
        ).replace(
            'print("文件日志系统已在main.py中初始化")',
            '# print("文件日志系统已在main.py中初始化")  # Production disabled'
        )
        
        with open('main.py', 'w', encoding='utf-8') as f:
            f.write(content)
        print("Disabled logging in main.py")
    
    # 2. Modify exe_file_logger.py - make all functions no-op
    if os.path.exists('exe_file_logger.py'):
        with open('exe_file_logger.py', 'r', encoding='utf-8') as f:
            content = f.read()
        
        # Replace setup_file_logging function with empty function
        content = content.replace(
            'def setup_file_logging():',
            'def setup_file_logging():\n    """Production - Logging disabled"""\n    return None\n\ndef setup_file_logging_original():'
        ).replace(
            'def log_to_file(message):',
            'def log_to_file(message):\n    """Production - Logging disabled"""\n    pass\n\ndef log_to_file_original(message):'
        )
        
        with open('exe_file_logger.py', 'w', encoding='utf-8') as f:
            f.write(content)
        print("Disabled logging in exe_file_logger.py")
    
    print("All logging functionality disabled")

def restore_logging():
    """Restore logging functionality"""
    print("Restoring development configuration...")
    files_to_restore = ['main.py', 'exe_file_logger.py']
    restored_count = 0
    
    for file_name in files_to_restore:
        backup_file = f'{file_name}.backup'
        try:
            if os.path.exists(backup_file):
                # Ensure target file is writable
                if os.path.exists(file_name):
                    os.chmod(file_name, 0o666)
                
                shutil.copy(backup_file, file_name)
                os.remove(backup_file)
                print(f"[OK] Restored {file_name}")
                restored_count += 1
            else:
                print(f"[WARN] Backup file not found: {backup_file}")
        except Exception as e:
            print(f"[ERROR] Failed to restore {file_name}: {e}")
    
    if restored_count == len(files_to_restore):
        print("[OK] All files restored to development configuration")
    else:
        print(f"[WARN] Restored {restored_count}/{len(files_to_restore)} files")

def main():
    """Main function"""
    print("Production Build Tool (No Logging Version)")
    print("=" * 60)
    
    try:
        # 1. Disable logging functionality
        disable_logging()
        
        # 2. Execute build
        print("\nStarting build...")
        result = subprocess.run(['python', 'quick_build.py'], capture_output=False)
        
        if result.returncode == 0:
            # Verify output (quick_build.py outputs to MultiPlatformGUI)
            if os.path.exists('dist/MultiPlatformGUI'):
                print("\nProduction build completed successfully!")
                print("Output directory: dist/MultiPlatformGUI/")
                print("All logging disabled - client will not generate log files")
                
                # Verify key files
                exe_path = 'dist/MultiPlatformGUI/main.exe'
                if os.path.exists(exe_path):
                    size = os.path.getsize(exe_path) / 1024 / 1024  # MB
                    print(f"Main executable: main.exe ({size:.1f} MB)")
                else:
                    print("WARNING: Main executable not found")
            else:
                print("\nERROR: Output directory verification failed - dist/MultiPlatformGUI not found")
        else:
            print("\nERROR: Build failed")
            
    except Exception as e:
        print(f"ERROR: Build process error: {e}")
    
    finally:
        # 3. Restore logging functionality (for development)
        print()
        restore_logging()
        
    print("\n" + "=" * 60)

if __name__ == "__main__":
    main() 