compub/src/compub/__main__.py

31 lines
927 B
Python

from argparse import ArgumentParser, SUPPRESS
from pathlib import Path
from typing import Any, Sequence
import uvicorn
from .settings import PROGRAM_NAME, CONFIG_FILE_PATH_PARAM, DEFAULT_CONFIG_FILE_PATHS, init, settings
def parse_cli(args: Sequence[str] = None) -> dict[str, Any]:
parser = ArgumentParser(PROGRAM_NAME)
parser.add_argument(
'-c', f'--{CONFIG_FILE_PATH_PARAM}',
type=Path,
metavar='PATH',
default=SUPPRESS,
help=f"Paths to config file that will take precedence over all others; "
f"the following {len(DEFAULT_CONFIG_FILE_PATHS)} paths are always checked first (in that order):"
f" {','.join(str(p) for p in DEFAULT_CONFIG_FILE_PATHS)}"
)
return vars(parser.parse_args(args))
def main():
init(**parse_cli())
uvicorn.run(f'{PROGRAM_NAME}.routes:app', **settings.server.dict())
if __name__ == '__main__':
main()