#!usr/bin/env python
# -*- coding: utf-8 -*-

import argparse

from GANDLF.cli import preprocess_and_save, copyrightMessage

# main function
if __name__ == "__main__":
    parser = argparse.ArgumentParser(
        prog="GANDLF_Preprocess",
        formatter_class=argparse.RawTextHelpFormatter,
        description="Generate training/inference data which are preprocessed to reduce resource footprint during computation.\n\n"
        + copyrightMessage,
    )
    parser.add_argument(
        "-c",
        "--config",
        metavar="",
        type=str,
        help="The configuration file (contains all the information related to the training/inference session), this is read from 'output' during inference",
        required=True,
    )
    parser.add_argument(
        "-i",
        "--inputdata",
        metavar="",
        type=str,
        help="Data csv file that is used for training/inference",
        required=True,
    )
    parser.add_argument(
        "-o",
        "--output",
        metavar="",
        type=str,
        help="Output directory to save intermediate files and model weights",
        required=True,
    )
    parser.add_argument(
        "-l",
        "--labelPad",
        metavar="",
        type=str,
        default="constant",
        help="This specifies the padding strategy for the label when 'patch_sampler' is 'label'. Defaults to 'constant' [full list: https://numpy.org/doc/stable/reference/generated/numpy.pad.html]",
        required=False,
    )
    parser.add_argument(
        "-a",
        "--applyaugs",
        metavar="",
        type=bool,
        default=False,
        help="This specifies the whether to apply data augmentation during output creation. Defaults to False",
        required=False,
    )

    args = parser.parse_args()

    preprocess_and_save(
        args.inputdata, args.config, args.output, args.labelPad, args.applyaugs
    )

    print("Finished.")
