code: public static Properties parseArgs(Class<?> caller, String[] args, Configuration conf) throws IOException {
      try {
  
        // Parse command-line options
        if (conf != null) {
          args = new GenericOptionsParser(conf, args).getCommandLine().getArgs();
        }
        CommandLine cmd = new DefaultParser().parse(options(), args);
  
        if (cmd.hasOption(HELP_OPTION.getOpt())) {
          printUsage(caller);
          System.exit(0);
        }
  
        String jobConfigLocation = JOB_CONFIG_OPTION.getLongOpt();
        if (!cmd.hasOption(jobConfigLocation)) {
          printUsage(caller);
          System.exit(1);
        }
  
        // Load job configuration properties
        Properties jobConfig;
        if (conf == null) {
          jobConfig = JobConfigurationUtils.fileToProperties(cmd.getOptionValue(jobConfigLocation));
        } else {
          jobConfig = JobConfigurationUtils.fileToProperties(cmd.getOptionValue(jobConfigLocation), conf);
          for (String configKey : jobConfig.stringPropertyNames()) {
            if (conf.get(configKey) != null) {
              conf.unset(configKey);
            }
          }
          JobConfigurationUtils.putConfigurationIntoProperties(conf, jobConfig);
        }
        return 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.
  @param conf Hadoop configuration object
  @return Instance of {@link Properties} for the Gobblin job to run.
  @throws IOException