from pathlib import Path
from typing import Optional

import click
from libretime_shared.cli import cli_logging_options
from libretime_shared.config import DEFAULT_ENV_PREFIX

from .config import __name__ as config_module
from .tasks import worker


@click.command(context_settings={"auto_envvar_prefix": DEFAULT_ENV_PREFIX})
@cli_logging_options()
def cli(log_level: str, log_filepath: Optional[Path]):
    """
    Run celery.
    """
    args = [
        "worker",
        f"--config={config_module}",
        "--beat",
        "--time-limit=1800",
        "--concurrency=1",
        f"--loglevel={log_level}",
    ]
    if log_filepath is not None:
        args.append(f"--logfile={log_filepath}")

    worker.worker_main(args)