docs: 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)