The main function of this module.

    :param argString: the options.

    :type argString: list of strings

def main(argString=None):
    """The main function of this module.

    :param argString: the options.

    :type argString: list of strings

    """
    # Getting and checking the options
    args = parseArgs(argString)
    checkArgs(args)

    logger.info("Options used:")
    for key, value in vars(args).iteritems():
        logger.info("  --{} {}".format(key.replace("_", "-"), value))

    # Checking if the output directory exists, creating it otherwise
    if not os.path.isdir(args.out_dir):
        os.mkdir(args.out_dir)

    # Ordering the directories according to their name
    qc_dir = order_qc_dir(args.qc_dir)

    # First, we want to merge the required files
    merge_required_files(qc_dir, args.out_dir)

    # Then, we want to copy the initial_files file
    copy_initial_files(os.path.join(qc_dir[0], "initial_files.txt"),
                       args.out_dir)

    # Get the final number of markers and samples
    final_nb_markers, final_nb_samples = get_final_numbers(
        os.path.join(qc_dir[-1], "final_files.txt"),
        args.out_dir,
    )

    # Getting the steps summary file (TeX)
    summary_files = get_summary_files(qc_dir)

    # Generating the report
    generate_report(args.out_dir, summary_files, final_nb_markers,
                    final_nb_samples, args)