#!/usr/bin/env python3
"""
Test Setup - Google Alerts Reporter
Valida configuração antes de executar o script principal
"""

import os
import sys
from pathlib import Path

class Colors:
    OKGREEN = '\033[92m'
    WARNING = '\033[93m'
    FAIL = '\033[91m'
    ENDC = '\033[0m'
    BOLD = '\033[1m'

def check(condition, message):
    """Verifica condição e imprime resultado."""
    if condition:
        print(f"{Colors.OKGREEN}✓{Colors.ENDC} {message}")
        return True
    else:
        print(f"{Colors.FAIL}✗{Colors.ENDC} {message}")
        return False

def main():
    print(f"""
{Colors.BOLD}╔════════════════════════════════════════════╗
║   VALIDADOR DE SETUP - Alerts Reporter    ║
╚════════════════════════════════════════════╝{Colors.ENDC}
""")

    checks_passed = 0
    total_checks = 0

    # 1. Python version
    total_checks += 1
    py_version = sys.version_info
    if check(py_version >= (3, 8), f"Python 3.8+ (atual: {py_version.major}.{py_version.minor})"):
        checks_passed += 1

    # 2. Dependencies
    required_packages = [
        'google.auth',
        'googleapiclient',
        'bs4',
        'requests',
        'dotenv'
    ]

    for package in required_packages:
        total_checks += 1
        try:
            __import__(package)
            if check(True, f"Pacote instalado: {package}"):
                checks_passed += 1
        except ImportError:
            check(False, f"Pacote instalado: {package}")
            print(f"      {Colors.WARNING}→ Instale com: pip3 install -r requirements-alerts.txt{Colors.ENDC}")

    # 3. credentials.json
    total_checks += 1
    creds_exists = os.path.exists('credentials.json')
    if check(creds_exists, "credentials.json encontrado"):
        checks_passed += 1
    else:
        print(f"      {Colors.WARNING}→ Baixe em: https://console.cloud.google.com/apis/credentials{Colors.ENDC}")

    # 4. .env file
    total_checks += 1
    env_exists = os.path.exists('.env')
    if check(env_exists, ".env encontrado"):
        checks_passed += 1

        # 4.1 Validar conteúdo do .env
        from dotenv import load_dotenv
        load_dotenv()

        total_checks += 1
        api_key = os.getenv('XAI_API_KEY', '')
        if check(api_key and api_key != 'SEU_API_KEY_AQUI', "XAI_API_KEY configurada"):
            checks_passed += 1
        else:
            print(f"      {Colors.WARNING}→ Configure em .env: XAI_API_KEY=xai-...{Colors.ENDC}")

        total_checks += 1
        query = os.getenv('SEARCH_QUERY', '')
        if check(query, f"SEARCH_QUERY configurada: '{query}'"):
            checks_passed += 1

    else:
        print(f"      {Colors.WARNING}→ Copie: cp env.example.alerts .env{Colors.ENDC}")

    # 5. token.json (opcional, criado na primeira execução)
    token_exists = os.path.exists('token.json')
    if token_exists:
        print(f"{Colors.OKGREEN}ℹ{Colors.ENDC} token.json encontrado (já autenticado)")
    else:
        print(f"{Colors.WARNING}ℹ{Colors.ENDC} token.json não encontrado (será criado na primeira execução)")

    # Resultado final
    print(f"""
{'='*48}
RESULTADO: {checks_passed}/{total_checks} verificações passaram
{'='*48}
""")

    if checks_passed == total_checks:
        print(f"""{Colors.OKGREEN}{Colors.BOLD}
✓ SETUP COMPLETO! Pronto para executar:

  python3 relatorio_alerts.py
{Colors.ENDC}""")
        return 0
    else:
        print(f"""{Colors.FAIL}{Colors.BOLD}
✗ SETUP INCOMPLETO! Corrija os erros acima antes de executar.
{Colors.ENDC}""")
        return 1

if __name__ == '__main__':
    exit(main())
