#!/usr/bin/python3.6 -s
# from __future__ import annotations
import argparse
import sys

from arkimapslib import cli
from arkimapslib.cmdline import Fail, Success

VERSION = "1.43"


def main():
    parser = argparse.ArgumentParser(description="Render maps from model output.")
    parser.add_argument("-v", "--verbose", action="store_true", help="verbose output")
    parser.add_argument("--debug", action="store_true", help="verbose output")
    parser.add_argument("--version", action="version", version="%(prog)s " + VERSION)
    # From Python 3.7+, use required=True
    subparsers = parser.add_subparsers(help="sub-command help", dest="command")

    cli.Process.make_subparser(subparsers)
    cli.PrintArkiQuery.make_subparser(subparsers)
    cli.DocumentRecipes.make_subparser(subparsers)
    cli.Dispatch.make_subparser(subparsers)
    cli.Render.make_subparser(subparsers)
    cli.Preview.make_subparser(subparsers)
    cli.DumpRecipes.make_subparser(subparsers)
    cli.LintCmd.make_subparser(subparsers)

    args = parser.parse_args()

    if args.command is None:
        parser.print_help()
        return
    else:
        handler = args.command(args)

    if getattr(handler, "kitchen", None) is not None:
        with handler.kitchen:
            res = handler.run()
    else:
        res = handler.run()
    if res is not None:
        sys.exit(res)


if __name__ == "__main__":
    try:
        main()
    except Fail as e:
        print(e, file=sys.stderr)
        sys.exit(1)
    except Success:
        pass
