1df917f87SPatrick Williams#!/usr/bin/python3
2df917f87SPatrick Williams
3df917f87SPatrick Williamsimport argparse
4df917f87SPatrick Williamsfrom importlib import import_module
5*a3db66b3SPatrick Williams
6df917f87SPatrick Williams
7df917f87SPatrick Williamsdef main() -> int:
8df917f87SPatrick Williams    parser = argparse.ArgumentParser(description="Obtain TOF voter metrics")
9df917f87SPatrick Williams    parser.add_argument(
10df917f87SPatrick Williams        "--data-directory",
11df917f87SPatrick Williams        "-d",
12df917f87SPatrick Williams        help="Data directory (default 'data')",
13df917f87SPatrick Williams        dest="dir",
14df917f87SPatrick Williams        default="data",
15df917f87SPatrick Williams    )
16df917f87SPatrick Williams
17df917f87SPatrick Williams    subparser = parser.add_subparsers(help="Available subcommands")
18df917f87SPatrick Williams
1922b7742bSPatrick Williams    commands = [
2022b7742bSPatrick Williams        import_module("libvoters.subcmd.analyze-commits"),
2122b7742bSPatrick Williams        import_module("libvoters.subcmd.analyze-reviews"),
2222b7742bSPatrick Williams        import_module("libvoters.subcmd.dump-gerrit"),
2322b7742bSPatrick Williams        import_module("libvoters.subcmd.report"),
2422b7742bSPatrick Williams    ]
2522b7742bSPatrick Williams    commands = [x.subcmd(subparser) for x in commands]  # type: ignore
26df917f87SPatrick Williams
27df917f87SPatrick Williams    args = parser.parse_args()
28df917f87SPatrick Williams
29df917f87SPatrick Williams    if "cmd" not in args:
30df917f87SPatrick Williams        print("Missing subcommand!")
31df917f87SPatrick Williams        return 1
32df917f87SPatrick Williams
33df917f87SPatrick Williams    return int(args.cmd.run(args))
34