"""
run.py — Activa el venv del proyecto en sys.path y delega a generate_flyer.main().

Permite invocar con `wsl python3 .../run.py [args]` (permiso existente en settings.local.json)
mientras los módulos se cargan desde el venv donde están google-genai y Pillow.
"""
import sys
import site
from pathlib import Path

VENV_DIR    = Path(__file__).parent.parent / ".venv"
SCRIPTS_DIR = Path(__file__).parent


def activate_venv():
    """Agrega el site-packages del venv al sys.path actual."""
    lib_dir = VENV_DIR / "lib"
    if not lib_dir.exists():
        print(f"ERROR: venv no encontrado en {VENV_DIR}")
        print("Ejecutá:")
        print(f"  python3 -m venv {VENV_DIR}")
        print(f"  {VENV_DIR}/bin/pip install google-genai Pillow")
        sys.exit(1)

    for py_dir in sorted(lib_dir.iterdir()):
        if py_dir.name.startswith("python"):
            sp = py_dir / "site-packages"
            if sp.exists():
                # addsitedir appends por defecto, pero necesitamos prioridad sobre los paquetes
                # del sistema (p.ej. typing_extensions del sistema es más viejo que el del venv).
                # Solución: capturar paths existentes, dejar que addsitedir procese los .pth,
                # luego mover los nuevos paths al frente.
                existing = set(sys.path)
                site.addsitedir(str(sp))
                new_paths = [p for p in sys.path if p not in existing]
                if new_paths:
                    for p in new_paths:
                        sys.path.remove(p)
                    sys.path[0:0] = new_paths
                return

    print("ERROR: site-packages no encontrado en el venv")
    sys.exit(1)


# Activar venv ANTES de cualquier otro import
activate_venv()

# Agregar el directorio de scripts para imports relativos
if str(SCRIPTS_DIR) not in sys.path:
    sys.path.insert(0, str(SCRIPTS_DIR))

# Importar y correr
import generate_flyer
generate_flyer.main()
