#!/usr/bin/env python3
"""
Service ASR principal pour Skull Pi
Reconnaissance vocale française avec Vosk
"""

import asyncio
import logging
import signal
import sys
from pathlib import Path

from .service import ASRService


def setup_logging() -> None:
    """Configure le logging pour le service ASR."""
    log_dir = Path("/opt/Skull/logs")
    log_dir.mkdir(parents=True, exist_ok=True)

    logging.basicConfig(
        level=logging.INFO,
        format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
        handlers=[
            logging.FileHandler(log_dir / "asr.log"),
            logging.StreamHandler(sys.stdout),
        ],
    )


async def main() -> None:
    """Point d'entrée principal du service ASR."""
    setup_logging()
    logger = logging.getLogger(__name__)

    logger.info("Démarrage du service ASR Skull Pi")

    # Créer le service ASR
    asr_service = ASRService()

    # Gérer l'arrêt propre
    stop_event = asyncio.Event()

    def signal_handler(signum: int, frame) -> None:
        logger.info(f"Signal {signum} reçu, arrêt en cours...")
        stop_event.set()

    signal.signal(signal.SIGINT, signal_handler)
    signal.signal(signal.SIGTERM, signal_handler)

    try:
        # Démarrer le service
        await asr_service.start()

        # Attendre l'arrêt
        await stop_event.wait()

    except Exception as e:
        logger.error(f"Erreur dans le service ASR: {e}", exc_info=True)
    finally:
        # Arrêter proprement
        await asr_service.stop()
        logger.info("Service ASR arrêté")


if __name__ == "__main__":
    asyncio.run(main())
