def cli_main()

in metaflow/plugins/cards/card_modules/chevron/main.py [0:0]


def cli_main():
    """Render mustache templates using json files"""
    import argparse
    import os

    def is_file_or_pipe(arg):
        if not os.path.exists(arg) or os.path.isdir(arg):
            parser.error("The file {0} does not exist!".format(arg))
        else:
            return arg

    def is_dir(arg):
        if not os.path.isdir(arg):
            parser.error("The directory {0} does not exist!".format(arg))
        else:
            return arg

    parser = argparse.ArgumentParser(description=__doc__)

    parser.add_argument("-v", "--version", action="version", version=version)

    parser.add_argument("template", help="The mustache file", type=is_file_or_pipe)

    parser.add_argument(
        "-d",
        "--data",
        dest="data",
        help="The json data file",
        type=is_file_or_pipe,
        default={},
    )

    parser.add_argument(
        "-y", "--yaml-loader", dest="yaml_loader", help=argparse.SUPPRESS
    )

    parser.add_argument(
        "-p",
        "--path",
        dest="partials_path",
        help="The directory where your partials reside",
        type=is_dir,
        default=".",
    )

    parser.add_argument(
        "-e",
        "--ext",
        dest="partials_ext",
        help="The extension for your mustache\
                              partials, 'mustache' by default",
        default="mustache",
    )

    parser.add_argument(
        "-l",
        "--left-delimiter",
        dest="def_ldel",
        help='The default left delimiter, "{{" by default.',
        default="{{",
    )

    parser.add_argument(
        "-r",
        "--right-delimiter",
        dest="def_rdel",
        help='The default right delimiter, "}}" by default.',
        default="}}",
    )

    parser.add_argument(
        "-w",
        "--warn",
        dest="warn",
        help="Print a warning to stderr for each undefined template key encountered",
        action="store_true",
    )

    args = vars(parser.parse_args())

    try:
        sys.stdout.write(main(**args))
        sys.stdout.flush()
    except SyntaxError as e:
        print("Chevron: syntax error")
        sys.exit("    " + "\n    ".join(e.args[0].split("\n")))