def run()

in nubia_complete/main.py [0:0]


def run(args):
    opts_parser = argparse.ArgumentParser(
        description="A shell completion utility for nubia programs"
    )

    subparsers = opts_parser.add_subparsers(help="sub-command help", dest="mode")
    opts_parser.add_argument(
        "--loglevel",
        type=str,
        default="INFO",
        choices=["CRITICAL", "ERROR", "WARNING", "INFO", "DEBUG"],
        help="logging level",
    )

    generate_parser = subparsers.add_parser(
        "generate-shell-setup",
        help="Generates a bash/zsh setup script that you can source",
    )
    complete_parser = subparsers.add_parser("complete", help="Triggers completions")
    generate_parser.add_argument(
        "--target-binary-name",
        type=str,
        required=True,
        help="The name of the nubia program we want to generate a completer for",
    )
    generate_parser.add_argument(
        "--command-model-path",
        type=str,
        required=True,
        help="The location on which to find the command model",
    )
    complete_parser.add_argument(
        "--command-model-path",
        type=str,
        required=True,
        help="The location on which to find the command model",
    )
    args = opts_parser.parse_args()
    # Setting up logging
    log_level = logging.getLevelName(args.loglevel)
    logging.basicConfig(level=log_level)
    if args.mode == "generate-shell-setup":
        return generate_shell_setup(args.target_binary_name, args.command_model_path)
    elif args.mode == "complete":
        return run_complete(args)
    else:
        print("Not Implemented!")
        return 2