Example usage for org.apache.commons.cli Option required

List of usage examples for org.apache.commons.cli Option required

Introduction

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

Prototype

boolean required

To view the source code for org.apache.commons.cli Option required.

Click Source Link

Document

specifies whether this option is required to be present

Usage

From source file:org.apache.batchee.cli.BatchEECLI.java

private static Options buildOptions(final Class<? extends Runnable> cmd, Map<String, Field> fields) {
    final Options options = new Options();
    Class<?> it = cmd;/*from   www. j  a  va2s.  c o m*/
    while (it != null) {
        for (final Field f : it.getDeclaredFields()) {
            final org.apache.batchee.cli.command.api.Option option = f
                    .getAnnotation(org.apache.batchee.cli.command.api.Option.class);
            final org.apache.batchee.cli.command.api.Arguments arguments = f
                    .getAnnotation(org.apache.batchee.cli.command.api.Arguments.class);
            if (option != null && arguments != null) {
                throw new IllegalArgumentException("An @Option can't get @Arguments: " + f);
            }

            if (option != null) {
                final String name = option.name();
                final Option.Builder builder = Option.builder(name).desc(option.description()).hasArg();
                if (option.required()) {
                    builder.required();
                }
                options.addOption(builder.build());
                fields.put(name, f);
                f.setAccessible(true);
            } else if (arguments != null) {
                if (fields.put("", f) != null) {
                    throw new IllegalArgumentException("A command can only have a single @Arguments");
                }
                f.setAccessible(true);
            }
        }
        it = it.getSuperclass();
    }
    return options;
}

From source file:org.voltdb.CLIConfig.java

public void parse(String cmdName, String[] args) {
    this.cmdName = cmdName;

    try {//from   w w  w . j av a 2 s  .co m
        options.addOption("help", "h", false, "Print this message");
        // add all of the declared options to the cli
        for (Field field : getClass().getDeclaredFields()) {
            if (field.isAnnotationPresent(Option.class)) {
                Option option = field.getAnnotation(Option.class);

                String opt = option.opt();
                if ((opt == null) || (opt.trim().length() == 0)) {
                    opt = field.getName();
                }
                String shortopt = option.shortOpt();
                if ((shortopt == null) || (shortopt.trim().length() == 0)) {
                    options.addOption(null, opt, option.hasArg(), option.desc());
                    helpmsgs.addOption(null, opt, option.hasArg(), option.desc());
                } else {
                    options.addOption(shortopt, opt, option.hasArg(), option.desc());
                    helpmsgs.addOption(shortopt, opt, option.hasArg(), option.desc());
                }
            } else if (field.isAnnotationPresent(AdditionalArgs.class)) {
                AdditionalArgs params = field.getAnnotation(AdditionalArgs.class);
                String opt = params.opt();
                if ((opt == null) || (opt.trim().length() == 0)) {
                    opt = field.getName();
                }
                options.addOption(opt, params.hasArg(), params.desc());
            }
        }

        CommandLineParser parser = new PosixParser();
        CommandLine cmd = parser.parse(options, args);

        if (cmd.hasOption("help")) {
            printUsage();
            System.exit(0);
        }
        String[] leftargs = cmd.getArgs();
        int leftover = 0;
        // string key-value pairs
        Map<String, String> kvMap = new TreeMap<String, String>();

        for (Field field : getClass().getDeclaredFields()) {
            if (field.isAnnotationPresent(Option.class)) {
                Option option = field.getAnnotation(Option.class);
                String opt = option.opt();
                if ((opt == null) || (opt.trim().length() == 0)) {
                    opt = field.getName();
                }

                if (cmd.hasOption(opt)) {
                    if (option.hasArg()) {
                        assignValueToField(field, cmd.getOptionValue(opt));
                    } else {
                        if (field.getType().equals(boolean.class) || field.getType().equals(Boolean.class)) {
                            field.setAccessible(true);
                            try {
                                field.set(this, true);
                            } catch (Exception e) {
                                throw new IllegalArgumentException(e);
                            }
                        } else {
                            printUsage();
                        }
                    }
                } else {
                    if (option.required()) {
                        printUsage();
                    }
                }

                field.setAccessible(true);
                kvMap.put(opt, field.get(this).toString());
            } else if (field.isAnnotationPresent(AdditionalArgs.class)) {
                // Deal with --table=BLHA, offer nice error message later
                leftover++;
            }
        }
        if (leftargs != null) {
            if (leftargs.length <= leftover) {
                Field[] fields = getClass().getDeclaredFields();
                for (int i = 0, j = 0; i < leftargs.length; i++) {
                    for (; j < fields.length; j++) {
                        if (fields[j].isAnnotationPresent(AdditionalArgs.class))
                            break;
                    }
                    fields[j].setAccessible(true);
                    fields[j].set(this, leftargs[i]);
                }
            } else {
                System.err.println("Expected " + leftover + " args, but receive " + leftargs.length + " args");
                printUsage();
                System.exit(-1);
            }
        }

        // check that the values read are valid
        // this code is specific to your app
        validate();

        // build a debug string
        StringBuilder sb = new StringBuilder();
        for (Entry<String, String> e : kvMap.entrySet()) {
            sb.append(e.getKey()).append(" = ").append(e.getValue()).append("\n");
        }
        configDump = sb.toString();
    }

    catch (Exception e) {
        System.err.println("Parsing failed. Reason: " + e.getMessage());
        printUsage();
        System.exit(-1);
    }
}

From source file:org.zend.sdkcli.internal.options.DetectOptionUtility.java

private static void addBoolean(Options options, Method method) {
    final Option a = method.getAnnotation(Option.class);

    // create option object
    final org.apache.commons.cli.Option o = new org.apache.commons.cli.Option(a.opt(), a.description());
    if (a.longOpt() != null && a.longOpt().length() > 0) {
        o.setLongOpt(a.longOpt());/*from   w w  w.  j a va2s  .c o  m*/
    }
    o.setArgs(0);
    o.setRequired(a.required());

    // assign to options list options.addOption(o);
    options.addOption(o);
}

From source file:org.zend.sdkcli.internal.options.DetectOptionUtility.java

private static void addString(Options options, Method method) {
    final Option a = method.getAnnotation(Option.class);

    // create option object
    final org.apache.commons.cli.Option o = new org.apache.commons.cli.Option(a.opt(), a.description());
    if (a.longOpt() != null && a.longOpt().length() > 0) {
        o.setLongOpt(a.longOpt());//from w  ww.  ja  v a 2s  . c  o m
    }
    o.setArgs(a.numberOfArgs());
    o.setRequired(a.required());
    o.setType(a.type());
    o.setArgName(a.argName());

    // assign to options list
    options.addOption(o);
}