def METHOD_NAME():
    # ensure we always have the default remote set.
    add_default_remote()
    parser = argparse.ArgumentParser()
    commands = parser.add_subparsers(
        title="commands", help="Commands to operate on ricecooker projects"
    )
    set_cmd = commands.add_parser("set")
    set_cmd.add_argument(
        "name", nargs="?", help="Property to set. Choices are: %r" % (props,)
    )
    set_cmd.add_argument("value", nargs="?", help="Value as string to set property to.")
    set_cmd.set_defaults(func=set)
    remote_cmd = commands.add_parser("remote")
    remote_cmds = remote_cmd.add_subparsers(
        title="remotes", description="Commands related to remote server management."
    )
    add_cmd = remote_cmds.add_parser("add")
    add_cmd.add_argument("name", nargs="?", help="Name of upload server.")
    add_cmd.add_argument("url", nargs="?", help="URL of server to upload to.")
    add_cmd.add_argument(
        "token", nargs="?", help="User authentication token for server."
    )
    add_cmd.set_defaults(func=add_remote)
    list_cmd = remote_cmds.add_parser("list")
    list_cmd.set_defaults(func=list_remotes)
    setup_cmd = commands.add_parser("setup")
    setup_cmd.set_defaults(func=setup_env)
    new_cmd = commands.add_parser("new")
    new_cmd.add_argument("name", nargs="?", help="Name of new chef")
    new_cmd.set_defaults(func=new_chef)
    fetch_cmd = commands.add_parser("fetch")
    fetch_cmd.set_defaults(func=fetch)
    prepare_cmd = commands.add_parser("prepare")
    prepare_cmd.set_defaults(func=prepare)
    serve_cmd = commands.add_parser("serve")
    serve_cmd.add_argument(
        "destination",
        nargs="?",
        default="default",
        help="Name of remote server to upload to.",
    )
    serve_cmd.set_defaults(func=serve)
    # just pass down the remaining args to the command.
    args, unknown = parser.parse_known_args()
    sys.exit(args.func(args, unknown))