#!/usr/bin/env python3

import argparse
import omlabs
import sys

avail_diags = [x for x in dir(omlabs.diags) if not x.startswith("__")]


class CLI(object):
    """Top-level command line interface"""

    for diag in avail_diags:
        exec(f"from omlabs.diags import {diag}")

    def __init__(self):
        usage = "omlabs <command> [<args>]\n\n"
        for diag in avail_diags:
            _description = eval(f"omlabs.diags.{diag}.__description__")
            usage = usage + (f"    {diag}  {_description}\n")

        metaparser = argparse.ArgumentParser(
            description="Command line interface to plot standard ocean analyses",
            usage=usage,
        )
        metaparser.add_argument("command", help="Subcommand to run")
        args = metaparser.parse_args(sys.argv[1:2])
        subargs = sys.argv[2:]
        omlabs.diags.__dict__[args.command].parse_and_run(subargs)


if __name__ == "__main__":
    CLI()
