def setup_parser()

in lib/ramble/ramble/cmd/results.py [0:0]


def setup_parser(subparser):
    sp = subparser.add_subparsers(metavar="SUBCOMMAND", dest="results_command")

    upload_parser = sp.add_parser(
        "upload", help=results_upload.__doc__, description=results_upload.__doc__
    )
    upload_parser.add_argument("filename", help="path of file to upload")

    report_parser = sp.add_parser(
        "report", help=results_report.__doc__, description=results_report.__doc__
    )
    report_parser.add_argument(
        "--workspace",
        dest="workspace",
        metavar="WRKSPC",
        action="store",
        help="the workspace to report on",
    )

    # The plot type should be exclusive, and only one plot type is supported per invocation
    plot_type_group = report_parser.add_mutually_exclusive_group(required=True)
    plot_type_group.add_argument(
        "--strong-scaling",
        dest="strong_scaling",
        nargs="+",
        help="generate a scaling report, requires two args: [y-axis metric] [x-axis metric]"
        "[optional: group by]",
        required=False,
    )
    plot_type_group.add_argument(
        "--weak-scaling",
        dest="weak_scaling",
        nargs="+",
        help="generate a scaling report, requires two args: [y-axis metric] [x-axis metric]"
        "[optional: group by]",
        required=False,
    )
    plot_type_group.add_argument(
        "--multi-line",
        dest="multi_line",
        nargs="+",
        help="generate a scaling report, requires two args: [y-axis metric] [x-axis metric]"
        "[optional: group by]",
        required=False,
    )
    plot_type_group.add_argument(
        "--compare",
        dest="compare",
        nargs="+",
        help="generate a comparison report, requires at least two args: [FOM 1] [Additional FOMs]"
        "[optional: group by(s)]",
        required=False,
    )
    plot_type_group.add_argument(
        "--foms",
        dest="foms",
        action="store_true",
        help="generate a FOM report, showing values of FOMs for each experiment",
        required=False,
    )
    report_parser.add_argument(
        "--pandas-where",
        dest="where",
        action="store",
        help="Down select data to plot (useful for complex workspaces with collisions). Takes"
        " pandas query format",
        required=False,
    )
    report_parser.add_argument(
        "-n",
        "--normalize",
        dest="normalize",
        action="store_true",
        help=(
            "Normalize charts where possible. For scaling charts, this requires fom_type to be "
            "specified as either 'time' or 'throughput' in the application definition."
        ),
        required=False,
    )
    report_parser.add_argument(
        "--logx", dest="logx", action="store_true", help=("Plot X axis as log"), required=False
    )
    report_parser.add_argument(
        "--logy", dest="logy", action="store_true", help=("Plot Y axis as log"), required=False
    )

    # TODO: should this make it into the final cut? Only applies to multi line -- remove
    report_parser.add_argument(
        "--split-by",
        dest="split_by",
        # nargs="+",
        # action="append",
        # default=["simplified_workload_namespace"],
        action="store",
        default="simplified_workload_namespace",
        help=("Ramble Variable to split out into different plots"),
        required=False,
    )
    report_parser.add_argument("-f", "--file", help="path of results file")