"""
Script de configuración completa para el Contenedor Cuántico
Instala WinFSP, configura el entorno y prepara el punto de montaje
"""

import os
import sys
import subprocess
import ctypes
import time
import platform

from setup_paths import configure_paths
from install_dependencies import install_dependencies
from winfsp_utils import check_winfsp_installation, restart_winfsp_service
from mount_utils import prepare_mountpoint

def is_admin():
    """Verifica si el script se está ejecutando con privilegios de administrador."""
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False

def install_winfsp():
    """Verifica e instala WinFSP si es necesario."""
    if not check_winfsp_installation():
        print("ERROR: WinFSP no está instalado correctamente.")
        return False
    if not restart_winfsp_service():
        print("ERROR: No se pudo reiniciar el servicio WinFSP.")
        return False
    return True

def main():
    print("=== CONFIGURACIÓN DEL CONTENEDOR CUÁNTICO ===")
    
    if not is_admin():
        print("⚠️ Este script debe ejecutarse como administrador.")
        print("Por favor, cierre esta ventana y ejecute el script como administrador.")
        return False
    
    print("Iniciando configuración completa...\n")
    
    # Configurar rutas necesarias
    configure_paths()
    
    # Instalar WinFSP
    winfsp_ok = install_winfsp()
    
    # Instalar módulos de Python
    modules_ok = install_dependencies()
    
    # Preparar punto de montaje
    mountpoint_ok = prepare_mountpoint()
    
    print("\n=== RESUMEN DE CONFIGURACIÓN ===")
    print(f"WinFSP: {'✅ Instalado' if winfsp_ok else '⚠️ No verificado'}")
    print(f"Módulos Python: {'✅ Instalados' if modules_ok else '❌ Error'}")
    print(f"Punto de montaje: {'✅ Listo' if mountpoint_ok else '❌ Error'}")
    
    if all([modules_ok, mountpoint_ok]):
        print("\n✅ CONFIGURACIÓN COMPLETADA CON ÉXITO")
        print("\nPara utilizar el Contenedor Cuántico, ejecute:")
        print(f"  python {os.path.join(os.path.dirname(__file__), '.venv', 'src', 'quantum_driver.py')} \"C:\\ruta\\a\\archivos\"")
        
        if not winfsp_ok:
            print("\n⚠️ NOTA: La instalación de WinFSP no pudo ser verificada.")
            print("Si el sistema FUSE no funciona, intente instalar WinFSP manualmente desde:")
            print("https://github.com/winfsp/winfsp/releases")
        
        return True
    else:
        print("\n❌ LA CONFIGURACIÓN NO SE COMPLETÓ CORRECTAMENTE")
        print("Por favor, corrija los errores e intente nuevamente.")
        return False

if __name__ == "__main__":
    success = main()
    input("\nPresione Enter para salir...")
    sys.exit(0 if success else 1)
