code: public static Properties parseArgs(Class<?> caller, String[] args) throws IOException {
      try {
        // Parse command-line options
        CommandLine cmd = new DefaultParser().parse(options(), args);
  
        if (cmd.hasOption(HELP_OPTION.getOpt())) {
          printUsage(caller);
          System.exit(0);
        }
  
        if (!cmd.hasOption(SYS_CONFIG_OPTION.getLongOpt()) || !cmd.hasOption(JOB_CONFIG_OPTION.getLongOpt())) {
          printUsage(caller);
          System.exit(1);
        }
  
        // Load system and job configuration properties
        Properties sysConfig = JobConfigurationUtils.fileToProperties(cmd.getOptionValue(SYS_CONFIG_OPTION.getLongOpt()));
        Properties jobConfig = JobConfigurationUtils.fileToProperties(cmd.getOptionValue(JOB_CONFIG_OPTION.getLongOpt()));
  
        return JobConfigurationUtils.combineSysAndJobProperties(sysConfig, jobConfig);
      } catch (ParseException | ConfigurationException e) {
        throw new IOException(e);
      }
    }
docs: Parse command line arguments and return a {@link java.util.Properties} object for the gobblin job found.
  @param caller Class of the calling main method. Used for error logs.
  @param args Command line arguments.
  @return Instance of {@link Properties} for the Gobblin job to run.
  @throws IOException