Source code for conntextual.commands.common
"""
A module implementing shared argument parsing interfaces.
"""
# built-in
from argparse import ArgumentParser as _ArgumentParser
from argparse import Namespace as _Namespace
from typing import List
# third-party
from vcorelib.logging import forward_flags
DEFAULT_VARIANT = "app"
[docs]
def runtimepy_cli_args(args: _Namespace) -> List[str]:
"""Get base command-line arguments for a runtimepy invocation."""
cli_args = ["runtimepy"]
flags = set(forward_flags(args, ["curses", "verbose", "no_uvloop"]))
is_headless = getattr(args, "variant", None) == "headless"
if not args.verbose and not is_headless:
flags.add("--quiet")
cli_args.extend(flags)
cli_args.append(args.cmd)
cli_args.extend(list(forward_flags(args, ["init_only", "no_poller"])))
# Ensure that the application continues to run when running the user
# interface.
if not is_headless or args.wait_for_stop:
cli_args.append("--wait-for-stop")
cli_args.extend(args.configs)
return cli_args
[docs]
def common_cli_args(parser: _ArgumentParser) -> None:
"""Add common command-line options."""
parser.add_argument(
"-c",
"--cmd",
default="arbiter",
help="runtimepy command to run (default: %(default)s)",
)