xfstestsdb/xfstestsdb/__init__.py

58 lines
2.1 KiB
Python

# 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)