@echo off
REM Script de lancement portable MyMind en mode DEBUG
REM Affiche la console Python et tous les messages de debogage
cd /d "%~dp0"

echo ========================================
echo MyMind - Mode DEBUG
echo ========================================
echo.

REM Verifier Python portable
if not exist "python\python.exe" (
    echo ERREUR: Python portable non trouve
    echo.
    echo Veuillez installer Python portable:
    echo 1. Telechargez depuis: https://www.python.org/downloads/windows/
    echo    Choisissez "Windows embeddable package"
    echo.
    echo 2. Extrayez dans: python\
    echo    Le dossier doit contenir python.exe
    echo.
    echo Voir INSTALL_PYTHON.md pour plus de details
    echo.
    pause
    exit /b 1
)

REM S'assurer que requirements.txt existe (pour la portabilite)
if not exist "requirements.txt" (
    if exist "..\requirements.txt" (
        copy "..\requirements.txt" "requirements.txt"
        echo [INFO] requirements.txt copie depuis le repertoire parent
    )
)

REM S'assurer que le dossier images existe avec les icones
if not exist "images" (
    echo Creation du dossier images...
    mkdir images
)

REM Copier les icones depuis chrome-extension si disponibles
if exist "..\..\chrome-extension\icon32.png" (
    if not exist "images\icon32.png" (
        copy "..\..\chrome-extension\icon32.png" "images\"
        copy "..\..\chrome-extension\icon16.png" "images\"
        copy "..\..\chrome-extension\icon48.png" "images\"
        copy "..\..\chrome-extension\icon128.png" "images\"
        copy "..\..\chrome-extension\logo.png" "images\"
        echo [INFO] Icones copiees
    )
)

REM Creer le dossier app s'il n'existe pas et copier les fichiers
if not exist "app" (
    echo Creation du dossier app...
    mkdir app
    
    REM Copier les fichiers depuis le repertoire parent
    if exist "..\main.py" (
        copy "..\main.py" "app\"
        copy "..\config.py" "app\"
        copy "..\api_client.py" "app\"
        copy "..\shortcut_handler.py" "app\"
        copy "..\gui.py" "app\"
        echo OK: Fichiers de l'application copies
    ) else (
        echo ERREUR: Fichiers source non trouves dans le repertoire parent
        echo Veuillez executer ce script depuis portable\
        echo.
        pause
        exit /b 1
    )
)

REM Verifier que l'application existe
if not exist "app\main.py" (
    echo ERREUR: Fichiers de l'application non trouves
    echo.
    pause
    exit /b 1
)

REM Verifier que le venv existe et fonctionne (portabilite)
REM Les venv Windows contiennent des chemins absolus, donc si le dossier a ete deplace,
REM le venv peut ne plus fonctionner. On teste directement et on le recreer si necessaire.
set VENV_VALID=0
if exist "venv\Scripts\python.exe" (
    REM Tester si le Python du venv fonctionne reellement
    echo Verification du venv...
    venv\Scripts\python.exe --version
    if not errorlevel 1 (
        REM Le venv fonctionne, il est valide
        set VENV_VALID=1
        echo [OK] Venv valide
    ) else (
        set VENV_VALID=0
        echo [ERREUR] Venv invalide
    )
)

REM Si le venv n'existe pas ou n'est pas valide, le supprimer puis utiliser l'UI d'installation
if "%VENV_VALID%"=="0" (
    REM Supprimer le venv casse (chemins absolus invalides apres deplacement du dossier)
    if exist "venv" (
        echo Suppression du venv invalide...
        rmdir /s /q venv
        echo OK: venv supprime
    )
    REM Verifier si install_ui.py existe
    if exist "install_ui.py" (
        REM En mode DEBUG, on affiche tout
        echo.
        echo ========================================
        echo Lancement de l'UI d'installation
        echo ========================================
        echo.
        REM En mode DEBUG, utiliser python.exe pour voir les messages
        python\python.exe install_ui.py
        if errorlevel 1 (
            echo ERREUR lors du lancement de l'UI d'installation
            pause
            exit /b 1
        )
        REM L'UI d'installation lancera l'application une fois terminee
        exit /b 0
    ) else (
        REM Si install_ui.py n'existe pas, continuer avec l'installation en console
        echo [INFO] UI d'installation non trouvee, utilisation du mode console
        echo.
    )
)

REM Recreer le venv si necessaire (portabilite)
REM Cela se produit automatiquement si le dossier a ete deplace/copie sur un autre poste
if "%VENV_VALID%"=="0" (
    if exist "venv" (
        echo Suppression de l'ancien venv...
        rmdir /s /q venv
    )
    
    REM Si on est ici, c'est qu'on n'a pas pu utiliser l'UI d'installation
    REM (install_ui.py n'existe pas), donc on continue en mode console
    echo.
    echo ========================================
    echo Configuration de l'environnement virtuel
    echo Cela peut prendre quelques minutes...
    echo ========================================
    echo.
    
    echo Creation de l'environnement virtuel avec le Python portable...
    python\python.exe -m venv venv
    if errorlevel 1 (
        echo ERREUR: Impossible de creer l'environnement virtuel
        pause
        exit /b 1
    )
    echo OK: Environnement virtuel cree
    echo.
    
    REM Verifier que requirements.txt existe, sinon le copier depuis le repertoire parent
    if not exist "requirements.txt" (
        echo Fichier requirements.txt introuvable, tentative de copie...
        if exist "..\requirements.txt" (
            copy "..\requirements.txt" "requirements.txt"
            echo OK: requirements.txt copie
        ) else (
            echo ERREUR: Fichier requirements.txt introuvable
            echo Le fichier doit etre dans le dossier portable\
            pause
            exit /b 1
        )
    )
    
    echo Mise a jour de pip...
    venv\Scripts\python.exe -m pip install --upgrade pip
    if errorlevel 1 (
        echo ERREUR: Impossible de mettre a jour pip
        echo Verification de la connexion Internet...
        pause
        exit /b 1
    )
    echo OK: pip mis a jour
    echo.
    
    echo Installation des dependances depuis requirements.txt...
    echo Cela peut prendre plusieurs minutes selon la connexion Internet...
    echo.
    venv\Scripts\python.exe -m pip install -r requirements.txt
    if errorlevel 1 (
        echo.
        echo ERREUR: Impossible d'installer les dependances
        echo.
        echo Verifications:
        echo - Connexion Internet active ?
        echo - Le fichier requirements.txt existe-t-il ?
        echo.
        pause
        exit /b 1
    )
    echo.
    
    REM Verifier que les packages sont bien installes
    echo Verification de l'installation des packages...
    venv\Scripts\pip.exe list | findstr /C:"requests" /C:"keyboard" /C:"pyperclip"
    if errorlevel 1 (
        echo ATTENTION: Certains packages semblent manquants
        echo Tentative de reinstallation...
        venv\Scripts\python.exe -m pip install --force-reinstall -r requirements.txt
        if errorlevel 1 (
            echo ERREUR: Echec de la reinstallation
            pause
            exit /b 1
        )
    )
    echo OK: Packages installes avec succes
    echo.
    echo OK: Environnement virtuel cree et configure avec succes
    echo.
)

REM Verifier quel Python est utilise (diagnostic)
echo ========================================
echo Informations de debogage
echo ========================================
echo.
echo Verification du Python utilise:
venv\Scripts\python.exe --version
echo.
echo Chemin du Python: %CD%\venv\Scripts\python.exe
echo Chemin de l'application: %CD%\app\main.py
echo.
echo ========================================
echo Demarrage de MyMind en mode DEBUG
echo ========================================
echo.
echo La console restera ouverte pour afficher tous les messages
echo Appuyez sur Ctrl+C pour arreter l'application
echo.
echo ========================================
echo.

REM Lancer l'application avec le Python du venv (explicite, portable)
REM En mode DEBUG, utiliser TOUJOURS python.exe (pas pythonw.exe) pour afficher la console
echo [DEBUG] Lancement avec: venv\Scripts\python.exe app\main.py
echo.
venv\Scripts\python.exe app\main.py

REM Code de retour
set EXIT_CODE=%ERRORLEVEL%

echo.
echo ========================================
echo Application terminee
echo ========================================
echo Code de retour: %EXIT_CODE%
echo.

if %EXIT_CODE% NEQ 0 (
    echo ERREUR: L'application s'est terminee avec une erreur
    echo.
)

pause

