@launch_cli.callback()
def launch(
config: Annotated[
Optional[Path],
typer.Option(
help="aria2-server config file path",
dir_okay=False,
readable=True,
allow_dash=True,
),
] = None,
) -> None:
"""Launch aria2-server."""
if config is not None:
logger.info(f"Loading config from: {config}")
config_model = _load_config_from_file(str(config))
logger.info(f"Loaded config:\n{config_model.model_dump_json(indent=4)}")
from aria2_server.config import reload
reload(config_model)
from aria2_server.app import main as app_main
from aria2_server.config import GLOBAL_CONFIG
from aria2_server.logger import configure_default_logging
uvicorn_logging_level = GLOBAL_CONFIG.server.uvicorn_logging_level
if uvicorn_logging_level == "trace":
uvicorn_logging_level = "debug"
logging_level = logging.getLevelName(uvicorn_logging_level.upper())
assert isinstance(logging_level, int)
configure_default_logging(logging_level)
app_main()