xfstestsdb/xfstestsdb/__init__.py
Anna Schumaker 35faa3a781 xfstestsdb: Add the xfstestsdb xunit subcommand
This subcommand doesn't actually do anything, it'll act as a hub for
xunit related subcommands instead.

Signed-off-by: Anna Schumaker <anna@nowheycreamery.com>
2023-02-15 15:57:38 -05:00

49 lines
1.7 KiB
Python

# Copyright 2023 (c) Anna Schumaker
"""Implements the toplevel xfstestsdb command."""
import argparse
from . import sqlite
from . import delete
from . import list
from . import new
from . import rename
from . import tag
from . import untag
from . import xunit
MAJOR = 1
MINOR = 0
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),
"list": list.Command(self.subparser, self.sql),
"new": new.Command(self.subparser, self.sql),
"rename": rename.Command(self.subparser, self.sql),
"tag": tag.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)