Source code for fermilink.cli.parser_services

from __future__ import annotations

import argparse
from collections.abc import Callable


CommandHandler = Callable[[argparse.Namespace], int]


[docs] def register_service_parsers( subparsers: argparse._SubParsersAction[argparse.ArgumentParser], # type: ignore[attr-defined] *, add_json_option: Callable[[argparse.ArgumentParser], None], cmd_start: CommandHandler, cmd_stop: CommandHandler, cmd_restart: CommandHandler, cmd_status: CommandHandler, ) -> None: """ Register parser arguments for service. Parameters ---------- subparsers : argparse._SubParsersAction[argparse.ArgumentParser] Subparser collection created from the root parser. add_json_option : Callable[[argparse.ArgumentParser], None] Callback that adds shared `--json` output flags. cmd_start : CommandHandler Command handler for `start` subcommands. cmd_stop : CommandHandler Command handler for `stop` subcommands. cmd_restart : CommandHandler Command handler for `restart` subcommands. cmd_status : CommandHandler Command handler for `status` subcommands. Returns ------- None No return value; parser objects are mutated in place. """ start_parser = subparsers.add_parser( "start", help="Start one or more services: runner, web. Default starts both.", ) add_json_option(start_parser) start_parser.add_argument("components", nargs="*", help="runner and/or web") start_parser.set_defaults(func=cmd_start) stop_parser = subparsers.add_parser( "stop", help="Stop one or more services: runner, web. Default stops both.", ) add_json_option(stop_parser) stop_parser.add_argument("components", nargs="*", help="runner and/or web") stop_parser.set_defaults(func=cmd_stop) restart_parser = subparsers.add_parser( "restart", help="Restart one or more services: runner, web. Default restarts both.", ) add_json_option(restart_parser) restart_parser.add_argument("components", nargs="*", help="runner and/or web") restart_parser.set_defaults(func=cmd_restart) status_parser = subparsers.add_parser( "status", help="Show service status for runner/web. Default checks both.", ) add_json_option(status_parser) status_parser.add_argument("components", nargs="*", help="runner and/or web") status_parser.set_defaults(func=cmd_status)