from __future__ import annotations
import argparse
import logging
import sys
from config.settings import settings

def setup_logging():
    logging.basicConfig(
        level=getattr(logging, settings.log_level.upper(), logging.INFO),
        format="%(asctime)s [%(levelname)s] %(name)s: %(message)s",
        datefmt="%Y-%m-%d %H:%M:%S",
        handlers=[logging.StreamHandler(sys.stdout)],
    )

def main():
    parser = argparse.ArgumentParser(description="STT Pipeline Runner")
    group = parser.add_mutually_exclusive_group()
    group.add_argument("--worker", action="store_true", help="Run as RabbitMQ worker (default)")
    group.add_argument("--producer", action="store_true", help="Run as RabbitMQ job producer")
    parser.add_argument("--once", action="store_true", help="Run once and exit")
    args = parser.parse_args()

    setup_logging()

    if args.producer:
        from workers.rabbitmq_job_producer import RabbitMQJobProducer
        producer = RabbitMQJobProducer()
        try:
            if args.once:
                producer.run_once()
            else:
                producer.run_forever()
        finally:
            producer.close()
    else:
        # Default to worker mode
        from workers.rabbitmq_transcription_worker import RabbitMQTranscriptionWorker
        worker = RabbitMQTranscriptionWorker()
        worker.start()

if __name__ == "__main__":
    main()
