#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""print unicode values and associated information to stdout."""
from typing import Any
import shlex
from unicodes_api.cli import SUBCOMMANDS
from unicodes_api.parser import ParserOpts


def test(_parser):
    """Test parser."""

    aval = shlex.split("all")

    return _parser.parse_args(aval)


def main(_parser):
    """Main function."""
    return _parser.parse_args()


if __name__ == "__main__":
    parser = ParserOpts.MAIN
    # args = test(parser)
    args = main(parser)
    avals = [i for i in dir(args) if not i.startswith("_")]
    if not avals:
        raise SystemExit(parser.format_help())
    cls = SUBCOMMANDS[args.func]  # type: Any
    try:
        cls.setup(*args.args)
    except TypeError as _e:
        hval = cls.popts.get_help()
        raise SystemExit(f"Invalid Options\n\n{hval}\n") from _e
    cls.set_args(args)
    cls.run()
