Source code for secantus.cli
from __future__ import annotations
import argparse
import logging
import signal
import sys
from types import FrameType
from secantus.server import SecantusDBServer
[docs]
def build_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(
prog="secantus",
description="Fake MongoDB server speaking the pymongo wire protocol.",
)
parser.add_argument("--host", default="127.0.0.1")
parser.add_argument("--port", type=int, default=27117)
parser.add_argument(
"--log-level",
default="INFO",
choices=["DEBUG", "INFO", "WARNING", "ERROR"],
)
return parser
[docs]
def main(argv: list[str] | None = None) -> int:
args = build_parser().parse_args(argv)
logging.basicConfig(
level=args.log_level,
format="%(asctime)s %(levelname)s %(name)s: %(message)s",
)
server = SecantusDBServer(host=args.host, port=args.port)
def handle_signal(signum: int, frame: FrameType | None) -> None:
server.stop()
sys.exit(0)
signal.signal(signal.SIGINT, handle_signal)
signal.signal(signal.SIGTERM, handle_signal)
server.start()
server.wait()
return 0