60 lines
2.2 KiB
Python
60 lines
2.2 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(),
|
|
done=lambda x: None)
|
|
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)
|
|
parsed.done(parsed)
|