#!/usr/bin/env python3
"""
Test LaTeX direct sans dépendances du bot
"""

import os
import subprocess
import tempfile

def test_latex_direct():
    """Test LaTeX direct"""
    print("🔧 Test LaTeX direct...")
    
    # Document LaTeX minimal
    simple_latex = r"""\documentclass[11pt, a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{geometry}
\geometry{left=2.5cm, right=2.5cm, top=3cm, bottom=3cm}

\begin{document}
\pagestyle{empty}

\begin{center}
    \LARGE{\textbf{ATTESTATION SUR L'HONNEUR}}
\end{center}

Je soussigne, Jean Dupont, demeurant au 123 Rue Test, 75001 Paris,

atteste sur l'honneur etre l'unique auteur-realisateur.

Fait a Paris, le 30/08/2025.

Jean Dupont

\end{document}"""
    
    try:
        # Créer un fichier temporaire
        with tempfile.NamedTemporaryFile(mode='w', suffix='.tex', delete=False, encoding='utf-8') as temp_file:
            temp_file.write(simple_latex)
            temp_tex_path = temp_file.name
        
        print(f"📁 Fichier LaTeX: {temp_tex_path}")
        
        # Préparer la compilation
        output_dir = "/tmp"
        filename_base = "test_latex_direct"
        
        compile_cmd = [
            'pdflatex',
            '-interaction=nonstopmode',
            f'-output-directory={output_dir}',
            f'-jobname={filename_base}',
            temp_tex_path
        ]
        
        print(f"🔄 Commande: {' '.join(compile_cmd)}")
        
        # Exécuter la compilation
        result = subprocess.run(compile_cmd, capture_output=True, text=True, cwd=output_dir, timeout=30)
        
        print(f"📊 Code de retour: {result.returncode}")
        
        if result.stdout:
            print(f"📤 STDOUT (premiers 300 chars): {result.stdout[:300]}")
        
        if result.stderr:
            print(f"❌ STDERR: {result.stderr}")
        
        # Vérifier le PDF
        pdf_path = os.path.join(output_dir, f"{filename_base}.pdf")
        if os.path.exists(pdf_path):
            size = os.path.getsize(pdf_path)
            print(f"✅ PDF créé: {pdf_path} ({size} bytes)")
            success = True
        else:
            print(f"❌ PDF non trouvé: {pdf_path}")
            success = False
        
        # Vérifier le log pour erreurs
        log_path = os.path.join(output_dir, f"{filename_base}.log")
        if os.path.exists(log_path):
            print(f"📋 Fichier log: {log_path}")
            try:
                with open(log_path, 'r', encoding='utf-8', errors='ignore') as f:
                    log_content = f.read()
                    # Chercher les erreurs
                    if "Error" in log_content or "error" in log_content.lower():
                        print("❌ Erreurs trouvées dans le log:")
                        lines = log_content.split('\n')
                        for line in lines:
                            if 'error' in line.lower() or 'Error' in line:
                                print(f"  {line.strip()}")
                    else:
                        print("✅ Aucune erreur dans le log")
            except Exception as e:
                print(f"❌ Erreur lecture log: {e}")
        
        # Nettoyer
        try:
            if os.path.exists(temp_tex_path):
                os.unlink(temp_tex_path)
            # Nettoyer les fichiers auxiliaires
            for ext in ['.aux', '.log', '.out']:
                aux_file = os.path.join(output_dir, f"{filename_base}{ext}")
                if os.path.exists(aux_file):
                    os.unlink(aux_file)
        except Exception as e:
            print(f"⚠️ Erreur nettoyage: {e}")
        
        return success
        
    except subprocess.TimeoutExpired:
        print("❌ Timeout de compilation LaTeX")
        return False
    except Exception as e:
        print(f"❌ Erreur test LaTeX: {e}")
        return False

def check_latex_installation():
    """Vérifier l'installation LaTeX"""
    print("\n🔍 Vérification installation LaTeX...")
    
    try:
        # Vérifier pdflatex
        result = subprocess.run(['pdflatex', '--version'], capture_output=True, text=True, timeout=10)
        if result.returncode == 0:
            version_line = result.stdout.split('\n')[0] if result.stdout else "Version inconnue"
            print(f"✅ pdflatex trouvé: {version_line}")
        else:
            print(f"❌ pdflatex erreur: {result.stderr}")
            return False
    except FileNotFoundError:
        print("❌ pdflatex non trouvé")
        return False
    except subprocess.TimeoutExpired:
        print("❌ pdflatex timeout")
        return False
    except Exception as e:
        print(f"❌ Erreur pdflatex: {e}")
        return False
    
    # Vérifier les packages essentiels
    essential_packages = ['inputenc', 'fontenc', 'geometry']
    
    for package in essential_packages:
        try:
            test_doc = f"""\\documentclass{{minimal}}
\\usepackage{{{package}}}
\\begin{{document}}
\\end{{document}}"""
            
            with tempfile.NamedTemporaryFile(mode='w', suffix='.tex', delete=False, encoding='utf-8') as f:
                f.write(test_doc)
                temp_path = f.name
            
            result = subprocess.run([
                'pdflatex', 
                '-interaction=nonstopmode',
                '-output-directory=/tmp',
                temp_path
            ], capture_output=True, text=True, timeout=10)
            
            if result.returncode == 0:
                print(f"✅ Package {package}: Disponible")
            else:
                print(f"❌ Package {package}: Non disponible")
                
            os.unlink(temp_path)
            
        except Exception as e:
            print(f"❌ Package {package}: Erreur test ({e})")
    
    return True

if __name__ == "__main__":
    print("🚀 Test LaTeX pour debug scambot")
    print("=" * 50)
    
    # Tests
    latex_installed = check_latex_installation()
    
    if latex_installed:
        success = test_latex_direct()
        
        print(f"\n📊 Résultat final:")
        if success:
            print("🎉 LaTeX fonctionne correctement!")
            print("✅ Le problème vient probablement des données ou de la logique du bot")
        else:
            print("❌ Problème avec LaTeX identifié")
            print("🔧 Vérifiez l'installation des packages LaTeX")
    else:
        print("\n❌ LaTeX n'est pas correctement installé")
        print("📦 Installez LaTeX avec: apt-get install texlive-latex-base texlive-fonts-recommended")