Source code for sr.comp.cli.command_line

"""srcomp command-line interface."""

from __future__ import annotations

import argparse
import sys

from . import (
    add_delay,
    awards,
    delay,
    deploy,
    fetch,
    for_each_match,
    import_schedule,
    knocked_out_teams,
    list_midi_ports,
    match_order_teams,
    modernise_static_knockout,
    print_schedule,
    schedule_league,
    scorer,
    shift_matches,
    show_league_table,
    show_schedule,
    summary,
    top_match_points,
    update_layout,
    validate,
    yaml_round_trip,
    youtube_chapters,
)


[docs] def add_list_commands(subparsers: argparse._SubParsersAction[argparse.ArgumentParser]) -> None: def command(settings: argparse.Namespace) -> None: commands = subparsers.choices.keys() print(" ".join(commands)) help_text = "Lists the available commands; useful for adding " \ "auto-completion of command names." parser = subparsers.add_parser('list-commands', help=help_text, description=help_text) parser.set_defaults(func=command)
[docs] def argument_parser() -> argparse.ArgumentParser: """A parser for CLI tool command line arguments, from argparse.""" parser = argparse.ArgumentParser(description="srcomp command-line interface") subparsers = parser.add_subparsers(title="commands") add_list_commands(subparsers) add_delay.add_subparser(subparsers) awards.add_subparser(subparsers) delay.add_subparser(subparsers) deploy.add_subparser(subparsers) fetch.add_subparser(subparsers) for_each_match.add_subparser(subparsers) import_schedule.add_subparser(subparsers) knocked_out_teams.add_subparser(subparsers) list_midi_ports.add_subparser(subparsers) match_order_teams.add_subparser(subparsers) modernise_static_knockout.add_subparser(subparsers) print_schedule.add_subparser(subparsers) schedule_league.add_subparser(subparsers) scorer.add_subparser(subparsers) shift_matches.add_subparser(subparsers) show_league_table.add_subparser(subparsers) show_schedule.add_subparser(subparsers) summary.add_subparser(subparsers) top_match_points.add_subparser(subparsers) update_layout.add_subparser(subparsers) validate.add_subparser(subparsers) yaml_round_trip.add_subparser(subparsers) youtube_chapters.add_subparser(subparsers) return parser
[docs] def main(args: list[str] | None = None) -> None: """Run as the CLI tool.""" if args is None: args = sys.argv[1:] parser = argument_parser() settings = parser.parse_args(args) if 'func' in settings: settings.func(settings) else: parser.print_help()