public static void main(final String[] args) { final Options options = new Options(); final HelpFormatter formatter = new HelpFormatter(); options.addOption(Option.builder("p").argName("password").hasArg().desc("Cleartext password to hash").build()); options.addOption(Option.builder("env").argName("name environment variable").hasArg().desc("name environment variable to read password from").build()); final CommandLineParser parser = new DefaultParser(); try { final CommandLine line = parser.parse(options, args); if(line.hasOption("p")) { System.out.println(hash(line.getOptionValue("p").toCharArray())); } else if(line.hasOption("env")) { final String pwd = System.getenv(line.getOptionValue("env")); if(pwd == null || pwd.isEmpty()) {
Options options = new Options(); HelpFormatter hf = new HelpFormatter(); hf.setWidth(100); options.addOption( Option.builder("i") .argName("in_path") .longOpt("input-file") .hasArg() .required() .desc("path to target jar/aar file") .build()); options.addOption( Option.builder("p") .argName("pkg_name") .longOpt("package") .hasArg() .desc("qualified package name") .build()); options.addOption( Option.builder("o") .argName("out_path") .longOpt("output-file") .hasArg() .required() .desc("path to processed jar/aar file") .build()); .argName("help") .longOpt("help")
Options options = new Options(); for (Opt opt : opts) { if (opt.noValue) { options.addOption(Option.builder(opt.shortName).longOpt(opt.longName).hasArg(false).build()); } else { options.addOption(Option.builder(opt.shortName).longOpt(opt.longName).hasArg().build()); DefaultParser parser = new DefaultParser(); CommandLine cl = parser.parse(options, rawArgs); HashMap<String, Object> ret = new HashMap<>(); for (Opt opt : opts) { if (opt.noValue) { ret.put(opt.shortName, cl.hasOption(opt.shortName)); } else { Object current = null; String[] strings = cl.getOptionValues(opt.shortName); if (strings != null) { for (String val : strings) { List<String> stringArgs = cl.getArgList(); if (args.size() > stringArgs.size()) { throw new RuntimeException("Wrong number of arguments at least " + args.size()
Options commandLineOptions = new Options(); Option.builder("minLikelihood").hasArg(true).required(false).build(); commandLineOptions.addOption(minLikelihoodOption); Option infoTypesOption = Option.builder("infoTypes").hasArg(true).required(false).build(); infoTypesOption.setArgs(Option.UNLIMITED_VALUES); commandLineOptions.addOption(infoTypesOption); Option.builder("f").hasArg(true).longOpt("inputFilePath").required(false).build(); commandLineOptions.addOption(inputFilePathOption); Option.builder("o").hasArg(true).longOpt("outputFilePath").required(false).build(); commandLineOptions.addOption(outputFilePathOption); Option projectIdOption = Option.builder("projectId").hasArg(true).required(false).build(); CommandLineParser parser = new DefaultParser(); HelpFormatter formatter = new HelpFormatter(); CommandLine cmd; cmd = parser.parse(commandLineOptions, args); } catch (ParseException e) { System.out.println(e.getMessage()); cmd.getOptionValue( minLikelihoodOption.getOpt(), Likelihood.LIKELIHOOD_UNSPECIFIED.name()));
options.addOption(Option.builder("r") .longOpt("report-interval") .hasArg() .argName("SECS") .desc("How long in between reported metrics. Will be rounded up to the next 10 sec boundary.\n" + "default " + DEFAULT_REPORT_INTERVAL) .build()); options.addOption(Option.builder("w") .longOpt("report-window") .hasArg() .argName("SECS") .desc("How long of a rolling window should be in each report. Will be rounded up to the next report interval boundary.\n" + "default " + DEFAULT_WINDOW_INTERVAL) .build()); options.addOption(Option.builder() .longOpt("reporter") .hasArg() .argName("TYPE:PATH?OPTIONS") .desc("Provide the config for a reporter to run. Supported types are:\n" + "FIXED - a fixed width format that should be more human readable\n" + "LEGACY - (write things out in the legacy format)\n" + "CSV - comma separated values\n" + "PATH and OPTIONS are each optional but must be marked with a ':' or '?' separator respectively.") .build());
private static CommandLine parseComandLine(String[] args) throws ParseException { Options opts = new Options(); CLIUtils.addCommonOptions(opts); opts.addOption(Option.builder("p") .hasArg() .argName("pattern") .desc(rb.getString("pattern")) .build()); opts.addOption(Option.builder("s") .hasArgs() .argName("[seq/]attr=value") .valueSeparator('=') .desc(rb.getString("str")) .build()); CommandLine cl = CLIUtils.parseComandLine(args, opts, rb, Dcm2Str.class); if (!cl.hasOption("p")) throw new MissingOptionException(rb.getString("missing-pattern-opt")); return cl; }
query = new Option(shortPrefix + "q", longPrefix + "query", false, "Display available YARN resources (memory, cores)"); applicationId = new Option(shortPrefix + "id", longPrefix + "applicationId", true, "Attach to running YARN session"); queue = new Option(shortPrefix + "qu", longPrefix + "queue", true, "Specify YARN queue."); shipPath = new Option(shortPrefix + "t", longPrefix + "ship", true, "Ship files in the specified directory (t for transfer)"); flinkJar = new Option(shortPrefix + "j", longPrefix + "jar", true, "Path to Flink jar file"); slots = new Option(shortPrefix + "s", longPrefix + "slots", true, "Number of slots per TaskManager"); dynamicproperties = Option.builder(shortPrefix + "D") .argName("property=value") .numberOfArgs(2) .valueSeparator() .desc("use value for given property") .build(); streaming = new Option(shortPrefix + "st", longPrefix + "streaming", false, "Start Flink in streaming mode"); name = new Option(shortPrefix + "nm", longPrefix + "name", true, "Set a custom name for the application on YARN"); help = new Option(shortPrefix + "h", longPrefix + "help", false, "Help for the Yarn session CLI."); allOptions = new Options(); allOptions.addOption(flinkJar); allOptions.addOption(jmMemory); allOptions.addOption(tmMemory); allOptions.addOption(container);
private Options inferOptionsFromMethods() { Options options = new Options(); for (Method method : klazz.getMethods()) { if (canUseMethod(method)) { CliObjectOption annotation = method.isAnnotationPresent(CliObjectOption.class) ? method.getAnnotation(CliObjectOption.class) : null; String optionName = annotation == null || Strings.isNullOrEmpty(annotation.name()) ? method.getName() : annotation.name(); String description = annotation == null ? "" : annotation.description(); Option.Builder builder = Option.builder(optionName).desc(description); boolean hasArg = method.getParameterTypes().length > 0; if (hasArg) { builder.hasArg(); } Option option = builder.build(); options.addOption(option); this.methodsMap.put(option.getOpt(), method); } } return options; }
protected Options createOptions() { Options options = new Options(); options.addOption(Option.builder(HELP_OPTION_NAME).desc("views this help text").build()); OptionGroup inputOptions = new OptionGroup(); inputOptions.setRequired(true); inputOptions.addOption(Option.builder(IRI_OPTION_NAME).argName("IRI").hasArg().desc("the iri of an ontology").build()); inputOptions.addOption(Option.builder(FILE_OPTION_NAME).argName("PATH").hasArg().desc("the local path to an ontology").build()); options.addOption(Option.builder(DEPENDENCIES_OPTION_NAME).argName("PATHS").hasArgs().desc("paths to dependencies of a local ontology").build()); OptionGroup outputOptions = new OptionGroup(); outputOptions.addOption(Option.builder(ECHO_OPTION_NAME).desc("prints the converted ontology on the console").build()); outputOptions.addOption(Option.builder(OUTPUT_OPTION_NAME).argName("PATH").hasArg().desc("specify the path for the desired output location").build()); options.addOptionGroup(inputOptions); options.addOptionGroup(outputOptions); return options; }
private static Options initOptions(Options options) { options.addOption(new Option(StringUtils.EMPTY + HELP_OPTION, "print this message")); options.addOption(Option.builder(StringUtils.EMPTY + PLAIN_PWD_OPTION).argName("plain password").hasArg() .desc("plain password to be encrypted").build()); options.addOption(Option.builder(StringUtils.EMPTY + MASTER_PWD_OPTION).argName("master password").hasArg() .desc("master password used to encrypt the plain password").build()); options.addOption(Option.builder(StringUtils.EMPTY + MASTER_PWD_FILE_OPTION).argName("master password file") .hasArg().desc("file that contains the master password used to encrypt the plain password").build()); options.addOption(new Option(StringUtils.EMPTY + STRONG_ENCRYPTOR_OPTION, "use strong encryptor")); options.addOption(Option.builder(StringUtils.EMPTY + ENCRYPTED_PWD_OPTION).argName("decrypt the input").hasArg().build()); return options; }
final Option advancedHelp = Option.builder().longOpt(ARGUMENT.ADVANCED_HELP) .desc("Print the advanced help message.").build(); final Option projectName = Option.builder().hasArg().argName("name").longOpt(ARGUMENT.PROJECT) .desc("The name of the project being scanned. This is a required argument.") .build(); final Option path = Option.builder(ARGUMENT.SCAN_SHORT).argName("path").hasArg().longOpt(ARGUMENT.SCAN) .desc("The path to scan - this option can be specified multiple times. Ant style" + " paths are supported (e.g. path/**/*.jar).") .build(); final Option excludes = Option.builder().argName("pattern").hasArg().longOpt(ARGUMENT.EXCLUDE) .desc("Specify an exclusion pattern. This option can be specified multiple times" + " and it accepts Ant style exclusions.") .build(); final Option props = Option.builder(ARGUMENT.PROP_SHORT).argName("file").hasArg().longOpt(ARGUMENT.PROP) .desc("A property file to load.") .build(); final Option out = Option.builder(ARGUMENT.OUT_SHORT).argName("path").hasArg().longOpt(ARGUMENT.OUT) .desc("The folder to write reports to. This defaults to the current directory. " + "It is possible to set this to a specific file name if the format argument is not set to ALL.") .build(); final Option outputFormat = Option.builder(ARGUMENT.OUTPUT_FORMAT_SHORT).argName("format").hasArg().longOpt(ARGUMENT.OUTPUT_FORMAT) .desc("The output format to write to (" + SUPPORTED_FORMATS + "). The default is HTML.") .build();
private Constructor<? extends T> inferConstructorOptions(Options otherOptions) { Constructor<? extends T> selectedConstructor = null; for (Constructor<?> constructor : this.klazz.getConstructors()) { if (canUseConstructor(constructor)) { if (selectedConstructor == null) { selectedConstructor = (Constructor<? extends T>) constructor; } else { throw new RuntimeException("Multiple usable constructors for " + this.klazz.getName()); } } } if (selectedConstructor == null) { throw new RuntimeException("There is no usable constructor for " + this.klazz.getName()); } int constructorIdx = 0; for (String argument : selectedConstructor.getAnnotation(CliObjectSupport.class).argumentNames()) { Option option = Option.builder(argument).required().hasArg().build(); otherOptions.addOption(option); constructoArgumentsMap.put(option.getOpt(), constructorIdx); constructorIdx++; } return selectedConstructor; }
@Test public void testPrintOptionGroupUsage() { OptionGroup group = new OptionGroup(); group.addOption(Option.builder("a").build()); group.addOption(Option.builder("b").build()); group.addOption(Option.builder("c").build()); Options options = new Options(); options.addOptionGroup(group); StringWriter out = new StringWriter(); HelpFormatter formatter = new HelpFormatter(); formatter.printUsage(new PrintWriter(out), 80, "app", options); assertEquals("usage: app [-a | -b | -c]" + EOL, out.toString()); }
Option versionOption = Option.builder("version") .longOpt("version") .desc("prints the version then exits") .build(); Option advanceOption = Option.builder("advance") .longOpt("advanced") .desc("prints advance information.") .build(); Option noSrcOption = Option.builder("s") .longOpt("no-src") .desc("Do not decode sources.") .build(); .longOpt("no-res") .desc("Do not decode resources.") .build(); .longOpt("force-manifest") .desc("Decode the APK's compiled manifest, even if decoding of resources is set to \"false\".") .build(); .longOpt("no-assets") .desc("Do not decode assets.") .build(); .longOpt("debug") .desc("REMOVED (DOES NOT WORK): Decode in debug mode.")
@Test public void testBuilder() throws Exception { CommandLine.Builder builder = new CommandLine.Builder(); builder.addArg( "foo" ).addArg( "bar" ); builder.addOption( Option.builder( "T" ).build() ); CommandLine cmd = builder.build(); assertEquals( "foo", cmd.getArgs()[0] ); assertEquals( "bar", cmd.getArgList().get( 1 ) ); assertEquals( "T", cmd.getOptions()[0].getOpt() ); } }
/** * Create command line option with short name, long name, and only one argument. * * @param shortOpt short version of option * @param longOpt long version of option * @param argName name of argument for help message * @param desc description of option */ private Option createSingleArgOpt(String shortOpt, String longOpt, String argName, String desc) { return Option.builder(shortOpt).longOpt(longOpt).hasArg().argName(argName).desc(desc).build(); }
secondGroup.setRequired(true); firstGroup.addOption(Option.builder("d") .longOpt("db") .hasArg() .argName("table-name") .build()); firstGroup.addOption(Option.builder("f") .longOpt("flat-file") .hasArg() .argName("input.csv") .build()); options.addOptionGroup(firstGroup); secondGroup.addOption(Option.builder("x") .hasArg() .argName("arg1") .build()); secondGroup.addOption(Option.builder("s") .build()); secondGroup.addOption(Option.builder("p") .hasArg() .argName("arg1") .build()); options.addOptionGroup(secondGroup);
/** * Marks this Option as required. * * @return this builder, to allow method chaining */ public Builder required() { return required(true); }
/** * Indicates that the Option will require an argument. * * @return this builder, to allow method chaining */ public Builder hasArg() { return hasArg(true); }