# Copyright 2023 (c) Anna Schumaker """Implements the toplevel xfstestsdb command.""" import argparse from . import sqlite from . import delete from . import gc from . import gtk from . import list from . import new from . import rename from . import show from . import tag from . import testcase from . import untag from . import xunit MAJOR = 1 MINOR = 6 class Command: """The root xfstestsdb command.""" def __init__(self) -> None: """Initialize the xfstestsdb command.""" self.parser = argparse.ArgumentParser() self.parser.set_defaults(function=lambda x: self.parser.print_usage()) self.parser.add_argument("--version", action="store_true", help="show version number and exit") self.subparser = self.parser.add_subparsers(title="commands") self.sql = sqlite.Connection() self.commands = {"delete": delete.Command(self.subparser, self.sql), "gc": gc.Command(self.subparser, self.sql), "gtk": gtk.Command(self.subparser, self.sql), "list": list.Command(self.subparser, self.sql), "new": new.Command(self.subparser, self.sql), "rename": rename.Command(self.subparser, self.sql), "show": show.Command(self.subparser, self.sql), "tag": tag.Command(self.subparser, self.sql), "testcase": testcase.Command(self.subparser, self.sql), "untag": untag.Command(self.subparser, self.sql), "xunit": xunit.Command(self.subparser, self.sql)} def __del__(self) -> None: """Clean up.""" self.sql.close() def run(self, args: list = None) -> None: """Run the xfstestsdb command.""" parsed = self.parser.parse_args(args) if parsed.version: print(f"xfstestsdb v{MAJOR}.{MINOR}" f"{'-debug' if __debug__ else ''}") else: with self.sql: parsed.function(parsed)