Example usage for org.apache.commons.cli OptionGroup OptionGroup

List of usage examples for org.apache.commons.cli OptionGroup OptionGroup

Introduction

In this page you can find the example usage for org.apache.commons.cli OptionGroup OptionGroup.

Prototype

OptionGroup

Source Link

Usage

From source file:net.ripe.rpki.validator.cli.CommandLineOptions.java

private void addCommandGroup() {
    OptionGroup group = new OptionGroup();

    Option helpOption = new Option("h", HELP, false, "Show usage information");
    group.addOption(helpOption);//from  www  . j  a v a 2  s  .  co m

    Option versionOption = new Option(null, VERSION, false, "Show version information");
    group.addOption(versionOption);

    Option printOption = new Option("p", PRINT, false,
            "Show the certificate repository object in a readable format");
    group.addOption(printOption);

    Option talOption = new Option("t", TAL, true,
            "Trust Anchor Locator (TAL). Can be specified more than once.");
    talOption.setArgs(Option.UNLIMITED_VALUES);
    group.addOption(talOption);

    group.setRequired(true);
    options.addOptionGroup(group);
}

From source file:com.hp.mqm.clt.CliParser.java

public CliParser() {
    options.addOption("h", "help", false, "show this help");
    options.addOption("v", "version", false, "show version of this tool");

    options.addOption("i", "internal", false, "supplied XML files are in the API internal XML format");
    options.addOption("e", "skip-errors", false, "skip errors on the server side");
    options.addOption(Option.builder("o").longOpt("output-file")
            .desc("write output to file instead of pushing it to the server").hasArg().argName("FILE").build());
    options.addOption(Option.builder("c").longOpt("config-file").desc("configuration file location").hasArg()
            .argName("FILE").build());

    options.addOption(Option.builder("s").longOpt("server").desc("server URL with protocol and port").hasArg()
            .argName("URL:PORT").build());
    options.addOption(Option.builder("d").longOpt("shared-space").desc("server shared space to push to")
            .hasArg().argName("ID").type(Number.class).build());
    options.addOption(Option.builder("w").longOpt("workspace").desc("server workspace to push to").hasArg()
            .argName("ID").type(Number.class).build());

    options.addOption(//from ww  w  .  java  2 s. c o  m
            Option.builder("u").longOpt("user").desc("server username").hasArg().argName("USERNAME").build());
    OptionGroup passGroup = new OptionGroup();
    passGroup.addOption(Option.builder("p").longOpt("password").desc("server password").hasArg()
            .argName("PASSWORD").optionalArg(true).build());
    passGroup.addOption(Option.builder().longOpt("password-file").desc("location of file with server password")
            .hasArg().argName("FILE").build());
    options.addOptionGroup(passGroup);

    options.addOption(
            Option.builder().longOpt("proxy-host").desc("proxy host").hasArg().argName("HOSTNAME").build());
    options.addOption(Option.builder().longOpt("proxy-port").desc("proxy port").hasArg().argName("PORT")
            .type(Number.class).build());
    options.addOption(
            Option.builder().longOpt("proxy-user").desc("proxy username").hasArg().argName("USERNAME").build());

    OptionGroup proxyPassGroup = new OptionGroup();
    proxyPassGroup.addOption(Option.builder().longOpt("proxy-password").desc("proxy password").hasArg()
            .argName("PASSWORD").optionalArg(true).build());
    proxyPassGroup.addOption(Option.builder().longOpt("proxy-password-file")
            .desc("location of file with proxy password").hasArg().argName("FILE").build());
    options.addOptionGroup(proxyPassGroup);

    options.addOption(
            Option.builder().longOpt("check-result").desc("check test result status after push").build());
    options.addOption(Option.builder().longOpt("check-result-timeout")
            .desc("timeout for test result push status retrieval").hasArg().argName("SEC").type(Number.class)
            .build());

    options.addOption(Option.builder("t").longOpt("tag").desc("assign tag to test result").hasArg()
            .argName("TYPE:VALUE").build());
    options.addOption(Option.builder("f").longOpt("field").desc("assign field tag to test result").hasArg()
            .argName("TYPE:VALUE").build());

    options.addOption(Option.builder("r").longOpt("release").desc("assign release to test result").hasArg()
            .argName("ID").type(Number.class).build());
    options.addOption(Option.builder("a").longOpt("product-area").desc("assign the test result to product area")
            .hasArg().argName("ID").type(Number.class).build());
    options.addOption(Option.builder("b").longOpt("backlog-item").desc("assign the test result to backlog item")
            .hasArg().argName("ID").type(Number.class).build());
    options.addOption(Option.builder().longOpt("started").desc("start time in milliseconds").hasArg()
            .argName("TIMESTAMP").type(Number.class).build());

    argsWithSingleOccurrence.addAll(Arrays.asList("o", "c", "s", "d", "w", "u", "p", "password-file", "r",
            "started", "check-status", "check-status-timeout", "proxy-host", "proxy-port", "proxy-user",
            "proxy-password", "proxy-password-file"));
    argsRestrictedForInternal.addAll(Arrays.asList("o", "t", "f", "r", "a", "b", "started"));
}

From source file:com.ericsson.eiffel.remrem.publish.cli.CliOptions.java

private static OptionGroup createContentGroup() {
    OptionGroup group = new OptionGroup();
    group.addOption(createFileOption());
    group.addOption(createJsonOption());
    return group;
}

From source file:com.continuent.tungsten.common.security.KeystoreManagerCtrl.java

/**
 * Setup command line options//from  w w w .j a  v  a  2 s. c  o  m
 */
@SuppressWarnings("static-access")
private void setupCommandLine() {
    // --- Options on the command line ---
    Option help = OptionBuilder.withLongOpt(HELP).withDescription("Displays this message").create(_HELP);

    // Mutually excluding options
    OptionGroup optionGroup = new OptionGroup();
    check = OptionBuilder.withLongOpt(CHECK).hasArgs(0).withDescription("Checks key password inside a keystore")
            .create(_CHECK);

    optionGroup.addOption(check);
    optionGroup.setRequired(true); // At least 1 command required

    // --- Options replacing parameters from security.properties ---
    Option keystoreLocation = OptionBuilder.withLongOpt(KEYSTORE_LOCATION).withArgName("filename").hasArg()
            .withDescription("Location of the keystore file").isRequired().create(_KEYSTORE_LOCATION);
    Option keyAlias = OptionBuilder.withLongOpt(KEY_ALIAS).withArgName("key alias").hasArg().isRequired()
            .withDescription("Alias for the key").create(_KEY_ALIAS);
    Option keyType = OptionBuilder.withLongOpt(KEY_TYPE).withArgName("key type").hasArg().isRequired()
            .withDescription(MessageFormat.format("Type of key: {0}", KEYSTORE_TYPE.getListValues("|")))
            .create(_KEY_TYPE);

    Option keystorePassword = OptionBuilder.withLongOpt(KEYSTORE_PASSWORD).withArgName("password").hasArg()
            .withDescription("Password for the keystore file").create(_KEYSTORE_PASSWORD);
    Option keyPassword = OptionBuilder.withLongOpt(KEY_PASSWORD).withArgName("key password").hasArg()
            .withDescription("Password for the key").create(_KEY_PASSWORD);

    // --- Add options to the list ---
    // --- Help
    this.helpOptions.addOption(help);

    // --- Program command line options
    this.options.addOptionGroup(optionGroup);
    this.options.addOption(help);
    this.options.addOption(keystoreLocation);
    this.options.addOption(keyAlias);
    this.options.addOption(keyType);
    this.options.addOption(keystorePassword);
    this.options.addOption(keyPassword);
}

From source file:ditl.graphs.cli.Analyze.java

@Override
protected void initOptions() {
    super.initOptions();
    graph_options.setOptions(options);//from ww  w  . j  a  va  2  s .co m
    final OptionGroup reportGroup = new OptionGroup();
    reportGroup.addOption(new Option(null, nodeCountOption, false, "node count report"));
    reportGroup.addOption(new Option(null, transitTimesOption, false, "transit times report"));
    reportGroup.addOption(new Option(null, timeToFirstContactOption, false, "time to first contact report"));
    reportGroup.addOption(new Option(null, numContactsOption, false, "number of contacs distribution"));
    reportGroup.addOption(new Option(null, nodeDegreeOption, false, "node degree distribution over time"));
    reportGroup.addOption(new Option(null, contactsOption, false, "contact time distribution"));
    reportGroup.addOption(new Option(null, interContactsOption, false, "inter-contact time distribution"));
    reportGroup.addOption(new Option(null, anyContactsOption, false, "any-contact time distribution"));
    reportGroup
            .addOption(new Option(null, interAnyContactsOption, false, "inter-any-contact time distribution"));
    reportGroup.addOption(
            new Option(null, clusteringOption, false, "clustering coefficient distribution over time"));
    reportGroup.addOption(new Option(null, groupSizeOption, false, "distribution of group sizes over time"));
    reportGroup.addOption(new Option(null, reachabilityOption, false,
            "proportion of bi-directional and directional edges in the reachability graph"));
    reportGroup.setRequired(true);
    options.addOptionGroup(reportGroup);
    options.addOption(null, maxTimeOption, true, "Ignore event after <arg> seconds");
    options.addOption(null, minTimeOption, true, "Ignore event before <arg> seconds");
}

From source file:iDynoOptimizer.MOEAFramework26.src.org.moeaframework.analysis.sensitivity.ExtractData.java

@SuppressWarnings("static-access")
@Override//from w w  w. j  a  v a  2s . c om
public Options getOptions() {
    Options options = super.getOptions();

    OptionGroup group = new OptionGroup();
    group.setRequired(true);
    group.addOption(OptionBuilder.withLongOpt("problem").hasArg().withArgName("name").create('b'));
    group.addOption(OptionBuilder.withLongOpt("dimension").hasArg().withArgName("number").create('d'));
    options.addOptionGroup(group);

    options.addOption(OptionBuilder.withLongOpt("input").hasArg().withArgName("file").isRequired().create('i'));
    options.addOption(OptionBuilder.withLongOpt("output").hasArg().withArgName("file").create('o'));
    options.addOption(OptionBuilder.withLongOpt("separator").hasArg().withArgName("value").create('s'));
    options.addOption(OptionBuilder.withLongOpt("reference").hasArg().withArgName("file").create('r'));
    options.addOption(OptionBuilder.withLongOpt("epsilon").hasArg().withArgName("e1,e2,...").create('e'));
    options.addOption(OptionBuilder.withLongOpt("noheader").create('n'));

    return options;
}

From source file:bdsup2sub.cli.CommandLineOptions.java

private void createAndAddOptions() {
    Option help = OptionBuilder.withLongOpt("help").withDescription("Show usage information and exit.")
            .hasArg(false).create(HELP);
    options.addOption(help);//  ww  w. ja va 2 s .  c  o  m

    Option version = OptionBuilder.withLongOpt("version").withDescription("Show version information and exit.")
            .hasArg(false).create(VERSION);
    options.addOption(version);

    Option output = OptionBuilder.withLongOpt("output").withDescription("Specify output file.").hasArg()
            .create(OUTPUT_FILE);
    options.addOption(output);

    Option verbose = OptionBuilder.withLongOpt("verbose").withDescription("Verbose console output mode.")
            .hasArg(false).create(VERBOSE);
    options.addOption(verbose);

    Option loadSettings = OptionBuilder.withLongOpt("load-settings")
            .withDescription("Load settings stored in configuration file even if running in command-line mode.")
            .hasArg(false).create(LOAD_SETTINGS);
    options.addOption(loadSettings);

    Option resolution = OptionBuilder.withArgName("resolution").withLongOpt("resolution").withDescription(
            "Set resolution to: keep, ntsc=480, pal=576, 720p=720, 1080p=1080, 1440x1080\nDefault: keep")
            .hasArg().create(RESOLUTION);
    options.addOption(resolution);

    OptionGroup framerateGroup = new OptionGroup();
    Option targetFrameRate = OptionBuilder.withArgName("fps").withLongOpt("fps-target").withDescription(
            "Synchronize target frame rate to <fps>.\nPredefined values: 24p=23.976, pal or 25p=25, ntsc or 30p=29.967, keep (preserves the source fps for BD&XML, else default)\nDefault: automatic (dumb!).")
            .hasArg().create(TARGET_FRAMERATE);
    framerateGroup.addOption(targetFrameRate);

    Option convertFrameRate = OptionBuilder.withArgName("src>, <trg").withLongOpt("convert-fps")
            .withDescription(
                    "Convert frame rate from <src> to <trg>\nSupported values: 24p=23.976, 25p=25, 30p=29.970\nauto,<trg> detects source frame rate.")
            .withValueSeparator(',').hasArgs(2).create(CONVERT_FRAMERATE);
    framerateGroup.addOption(convertFrameRate);

    options.addOptionGroup(framerateGroup);

    Option delay = OptionBuilder.withArgName("delay").withLongOpt("delay")
            .withDescription("Set delay in ms\nDefault: 0.0").hasArg().create(DELAY);
    options.addOption(delay);

    Option filter = OptionBuilder.withArgName("filter").withLongOpt("filter").withDescription(
            "Set the filter to use for scaling.\nSupported values: bilinear, triangle, bicubic, bell, b-spline, hermite, lanczos3, mitchell\nDefault: bilinear")
            .hasArg().create(SCALING_FILTER);
    options.addOption(filter);

    Option paletteMode = OptionBuilder.withArgName("mode").withLongOpt("palette-mode")
            .withDescription("Set palette mode.\nSupported values: keep, create, dither\nDefault: create")
            .hasArg().create(PALETTE_MODE);
    options.addOption(paletteMode);

    Option minDisplayTime = OptionBuilder.withArgName("time").withLongOpt("minimum-time")
            .withDescription("Set minimum display time in ms.\nDefault: 500").hasArg().create(MIN_DISPLAY_TIME);
    options.addOption(minDisplayTime);

    Option maxTimeDiff = OptionBuilder.withArgName("time").withLongOpt("merge-time")
            .withDescription("Set maximum time difference for merging subtitles in ms.\nDefault: 200").hasArg()
            .create(MAX_TIME_DIFF);
    options.addOption(maxTimeDiff);

    OptionGroup moveGroup = new OptionGroup();
    Option moveIn = OptionBuilder.withArgName("ratio, offset").withLongOpt("move-in")
            .withDescription("Move captions inside screen ratio <ratio>, +/- offset <offset>")
            .withValueSeparator(',').hasArgs(2).create(MOVE_IN);
    moveGroup.addOption(moveIn);

    Option moveOut = OptionBuilder.withArgName("ratio, offset").withLongOpt("move-out")
            .withDescription("Move captions outside screen ratio <ratio>, +/- offset <offset>")
            .withValueSeparator(',').hasArgs(2).create(MOVE_OUT);
    moveGroup.addOption(moveOut);

    options.addOptionGroup(moveGroup);

    Option moveX = OptionBuilder.withArgName("pos[, offset]").withLongOpt("move-x").withDescription(
            "Move captions horizontally from specified position. <pos> may be left, right, center\n+/- optional offset <offset> (only if moving left or right)")
            .withValueSeparator(',').hasOptionalArgs(2).create(MOVE_X);
    options.addOption(moveX);

    Option cropLines = OptionBuilder.withArgName("n").withLongOpt("crop-y")
            .withDescription("Crop the upper/lower n lines.\nDefault: 0").hasArg().create(CROP_LINES);
    options.addOption(cropLines);

    Option alphaCropThreshold = OptionBuilder.withArgName("n").withLongOpt("alpha-crop")
            .withDescription("Set the alpha cropping threshold.\nDefault: 10").hasArg()
            .create(ALPHA_CROP_THRESHOLD);
    options.addOption(alphaCropThreshold);

    Option scale = OptionBuilder.withArgName("x, y").withLongOpt("scale")
            .withDescription("Scale captions horizontally and vertically.\nDefault: 1.0,1.0")
            .withValueSeparator(',').hasArgs(2).create(SCALE);
    options.addOption(scale);

    Option exportPalette = OptionBuilder.withLongOpt("export-palette")
            .withDescription("Export target palette in PGCEdit format.").hasArg(false).create(EXPORT_PALETTE);
    options.addOption(exportPalette);

    Option exportForcedSubtitlesOnly = OptionBuilder.withLongOpt("forced-only")
            .withDescription("Export only forced subtitles (when converting from BD-SUP).").hasArg(false)
            .create(EXPORT_FORCED_SUBTITLES_ONLY);
    options.addOption(exportForcedSubtitlesOnly);

    Option setForcedFlag = OptionBuilder.withArgName("state").withLongOpt("force-all")
            .withDescription("Set or clear the forced flag for all subtitles.\nSupported values: set, clear")
            .hasArg().create(FORCED_FLAG);
    options.addOption(setForcedFlag);

    Option swapCrCb = OptionBuilder.withLongOpt("swap")
            .withDescription("Swap Cr/Cb components when loading a BD/HD-DVD sup file.").hasArg(false)
            .create(SWAP_CR_CB);
    options.addOption(swapCrCb);

    Option fixInvisibleFrames = OptionBuilder.withLongOpt("fix-invisible")
            .withDescription("Fix zero alpha frame palette for SUB/IDX and SUP/IFO.").hasArg(false)
            .create(FIX_INVISIBLE_FRAMES);
    options.addOption(fixInvisibleFrames);

    Option alphaThreshold = OptionBuilder.withArgName("n").withLongOpt("alpha-thr")
            .withDescription("Set alpha threshold 0..255 for SUB/IDX conversion.\nDefault: 80").hasArg()
            .create(ALPHA_THRESHOLD);
    options.addOption(alphaThreshold);

    Option luminanceLowMedThreshold = OptionBuilder.withArgName("n").withLongOpt("lum-low-med-thr")
            .withDescription("Set luminance lo/med threshold 0..255 for SUB/IDX conversion.\nDefault: auto")
            .hasArg().create(LUM_LOW_MED_THRESHOLD);
    options.addOption(luminanceLowMedThreshold);

    Option luminanceMedHighThreshold = OptionBuilder.withArgName("n").withLongOpt("lum-med-hi-thr")
            .withDescription("Set luminance med/hi threshold 0..255 for SUB/IDX conversion.\nDefault: auto")
            .hasArg().create(LUM_MED_HIGH_THRESHOLD);
    options.addOption(luminanceMedHighThreshold);

    Option languageCode = OptionBuilder.withArgName("language").withLongOpt("language")
            .withDescription("Set language for SUB/IDX export.\nDefault: en").hasArg().create(LANGUAGE_CODE);
    options.addOption(languageCode);

    Option paletteFile = OptionBuilder.withArgName("file").withLongOpt("palette-file")
            .withDescription("Load palette file for SUB/IDX conversion. Overrides default palette.").hasArg()
            .create(PALETTE_FILE);
    options.addOption(paletteFile);
}

From source file:com.example.dlp.RiskAnalysis.java

/**
 * Command line application to perform risk analysis using the Data Loss Prevention API.
 * Supported data format: BigQuery tables
 *///w w  w.  j a va 2 s. c o  m
public static void main(String[] args) throws Exception {

    OptionGroup optionsGroup = new OptionGroup();
    optionsGroup.setRequired(true);

    Option numericalAnalysisOption = new Option("n", "numerical");
    optionsGroup.addOption(numericalAnalysisOption);

    Option categoricalAnalysisOption = new Option("c", "categorical");
    optionsGroup.addOption(categoricalAnalysisOption);

    Option kanonymityOption = new Option("k", "kAnonymity");
    optionsGroup.addOption(kanonymityOption);

    Option ldiversityOption = new Option("l", "lDiversity");
    optionsGroup.addOption(ldiversityOption);

    Options commandLineOptions = new Options();
    commandLineOptions.addOptionGroup(optionsGroup);

    Option datasetIdOption = Option.builder("datasetId").hasArg(true).required(false).build();
    commandLineOptions.addOption(datasetIdOption);

    Option tableIdOption = Option.builder("tableId").hasArg(true).required(false).build();
    commandLineOptions.addOption(tableIdOption);

    Option projectIdOption = Option.builder("projectId").hasArg(true).required(false).build();
    commandLineOptions.addOption(projectIdOption);

    Option columnNameOption = Option.builder("columnName").hasArg(true).required(false).build();
    commandLineOptions.addOption(columnNameOption);

    Option sensitiveAttributeOption = Option.builder("sensitiveAttribute").hasArg(true).required(false).build();
    commandLineOptions.addOption(sensitiveAttributeOption);

    Option quasiIdColumnNamesOption = Option.builder("quasiIdColumnNames").hasArg(true).required(false).build();
    commandLineOptions.addOption(quasiIdColumnNamesOption);

    CommandLineParser parser = new DefaultParser();
    HelpFormatter formatter = new HelpFormatter();
    CommandLine cmd;

    try {
        cmd = parser.parse(commandLineOptions, args);
    } catch (ParseException e) {
        System.out.println(e.getMessage());
        formatter.printHelp(RiskAnalysis.class.getName(), commandLineOptions);
        System.exit(1);
        return;
    }

    String datasetId = cmd.getOptionValue(datasetIdOption.getOpt());
    String tableId = cmd.getOptionValue(tableIdOption.getOpt());
    // use default project id when project id is not specified
    String projectId = cmd.getOptionValue(projectIdOption.getOpt(), ServiceOptions.getDefaultProjectId());

    if (cmd.hasOption("n")) {
        // numerical stats analysis
        String columnName = cmd.getOptionValue(columnNameOption.getOpt());
        calculateNumericalStats(projectId, datasetId, tableId, columnName);
    } else if (cmd.hasOption("c")) {
        // categorical stats analysis
        String columnName = cmd.getOptionValue(columnNameOption.getOpt());
        calculateCategoricalStats(projectId, datasetId, tableId, columnName);
    } else if (cmd.hasOption("k")) {
        // k-anonymity analysis
        List<String> quasiIdColumnNames = Arrays.asList(cmd.getOptionValues(quasiIdColumnNamesOption.getOpt()));
        calculateKAnonymity(projectId, datasetId, tableId, quasiIdColumnNames);
    } else if (cmd.hasOption("l")) {
        // l-diversity analysis
        String sensitiveAttribute = cmd.getOptionValue(sensitiveAttributeOption.getOpt());
        List<String> quasiIdColumnNames = Arrays.asList(cmd.getOptionValues(quasiIdColumnNamesOption.getOpt()));
        calculateLDiversity(projectId, datasetId, tableId, sensitiveAttribute, quasiIdColumnNames);
    }
}

From source file:com.github.triceo.robozonky.app.CommandLineInterface.java

/**
 * Parse the command line./*from  ww w  .j ava2  s .c om*/
 *
 * @param args Command line arguments as received by {@link App#main(String...)}.
 * @return Empty if parsing failed, at which point it will write standard help message to sysout.
 */
public static Optional<CommandLineInterface> parse(final String... args) {
    // create the mode of operation
    final OptionGroup operatingModes = new OptionGroup();
    operatingModes.setRequired(true);
    Stream.of(OperatingMode.values()).forEach(mode -> operatingModes.addOption(mode.getSelectingOption()));
    // find all options from all modes of operation
    final Collection<Option> ops = Stream.of(OperatingMode.values()).map(OperatingMode::getOtherOptions)
            .collect(LinkedHashSet::new, LinkedHashSet::addAll, LinkedHashSet::addAll);
    // include authentication options
    final OptionGroup authenticationModes = new OptionGroup();
    authenticationModes.setRequired(true);
    authenticationModes.addOption(CommandLineInterface.OPTION_USERNAME);
    authenticationModes.addOption(CommandLineInterface.OPTION_KEYSTORE);
    ops.add(CommandLineInterface.OPTION_PASSWORD);
    ops.add(CommandLineInterface.OPTION_USE_TOKEN);
    ops.add(CommandLineInterface.OPTION_FAULT_TOLERANT);
    ops.add(CommandLineInterface.OPTION_CLOSED_SEASON);
    ops.add(CommandLineInterface.OPTION_ZONK);
    // join all in a single config
    final Options options = new Options();
    options.addOptionGroup(operatingModes);
    options.addOptionGroup(authenticationModes);
    ops.forEach(options::addOption);
    final CommandLineParser parser = new DefaultParser();
    // and parse
    try {
        final CommandLine cli = parser.parse(options, args);
        CommandLineInterface.logOptionValues(cli);
        return Optional.of(new CommandLineInterface(options, cli));
    } catch (final ParseException ex) {
        CommandLineInterface.printHelp(options, ex.getMessage(), true);
        return Optional.empty();
    }
}

From source file:com.falcon.orca.helpers.CommandHelper.java

public static Options createOptions() {
    Option start = Option.builder("s").longOpt("start").build();
    Option stop = Option.builder("st").longOpt("stop").build();
    Option pause = Option.builder("p").longOpt("pause").build();
    Option continueOpt = Option.builder("re").longOpt("resume").build();
    Option exit = Option.builder("e").longOpt("exit").build();
    Option url = Option.builder("U").longOpt("url").hasArg(true).build();
    Option durationMode = Option.builder("DM").longOpt("durationMode").hasArg(true).build();
    Option duration = Option.builder("DU").longOpt("duration").hasArg(true).build();
    Option repeats = Option.builder("R").longOpt("repeats").hasArg(true).build();
    Option method = Option.builder("M").longOpt("method").hasArg(true).build();
    Option header = Option.builder("H").longOpt("header").hasArg(true).build();
    Option concurrency = Option.builder("C").longOpt("concurrency").hasArg(true).build();
    Option templateFile = Option.builder("TF").longOpt("template").hasArg(true).build();
    Option dataFile = Option.builder("DF").longOpt("dataFile").hasArg(true).build();
    Option cookies = Option.builder("CO").longOpt("cookie").hasArg(true).build();
    Option data = Option.builder("D").longOpt("data").hasArg(true).type(String.class).build();

    OptionGroup optionGroup = new OptionGroup();
    optionGroup.setRequired(true);/*w  w  w  .ja  va  2  s .  com*/
    optionGroup.addOption(start);
    optionGroup.addOption(stop);
    optionGroup.addOption(pause);
    optionGroup.addOption(continueOpt);
    optionGroup.addOption(exit);
    Options options = new Options();
    options.addOptionGroup(optionGroup);
    options.addOption(url);
    options.addOption(durationMode);
    options.addOption(duration);
    options.addOption(repeats);
    options.addOption(method);
    options.addOption(header);
    options.addOption(concurrency);
    options.addOption(cookies);
    options.addOption(data);
    options.addOption(templateFile);
    options.addOption(dataFile);
    return options;
}