"""Process master_taxonomy_job queue (fix_all, bootstrap, push_nodes, etc.)."""

from __future__ import annotations

import argparse
import logging
import os
import time

from app.jobs.master_taxonomy_enqueue import run_master_taxonomy_job_once


logger = logging.getLogger(__name__)


def main() -> int:
    logging.basicConfig(level=logging.INFO)
    parser = argparse.ArgumentParser(description="Process master_taxonomy_job queue")
    parser.add_argument("--once", action="store_true", help="Process one job and exit")
    parser.add_argument("--poll", type=int, default=30, help="Seconds to sleep when queue is empty")
    args = parser.parse_args()
    worker = f"taxonomy-worker-{os.getpid()}"

    if args.once:
        run_master_taxonomy_job_once(worker_id=worker)
        return 0

    logger.info("taxonomy-worker: starting continuous loop (idle poll=%ss)", args.poll)
    while True:
        try:
            had_work = run_master_taxonomy_job_once(worker_id=worker)
        except Exception:
            logger.exception("taxonomy-worker: pass failed")
            time.sleep(args.poll)
            continue
        if not had_work:
            time.sleep(args.poll)


if __name__ == "__main__":
    raise SystemExit(main())
