import argparse


def setup(parser):
    parser = argparse.ArgumentParser(
        description="Perform sensitivity analysis on model output"
    )
    parser.add_argument(
        "-p", "--paramfile", type=str, required=True, help="Parameter range file"
    )
    parser.add_argument(
        "-Y", "--model-output-file", type=str, required=True, help="Model output file"
    )
    parser.add_argument(
        "-c",
        "--column",
        type=int,
        required=False,
        default=0,
        help="Column of output to analyze",
    )
    parser.add_argument(
        "--delimiter",
        type=str,
        required=False,
        default=" ",
        help="Column delimiter in model output file",
    )
    parser.add_argument(
        "-s", "--seed", type=int, required=False, default=None, help="Random Seed"
    )
    return parser


def create(cli_parser=None):
    parser = argparse.ArgumentParser(
        description="Perform sensitivity analysis on model output"
    )
    parser = setup(parser)

    if cli_parser:
        parser = cli_parser(parser)

    return parser


def run_cli(cli_parser, run_analysis, known_args=None):
    parser = create(cli_parser)
    args = parser.parse_args(known_args)

    run_analysis(args)
