Apache Commons CLI несколько значений аргументов в параметре -help

Я использую Apache Commons CLI для анализа аргументов командной строки.

Я ищу способ отображения нескольких имен значений аргументов в справке. Вот пример для одного аргумента опции "startimport":

Option startimport = OptionBuilder
                .withArgName("environment")
                .hasArg()
                .withDescription(
                        "Description")
                .create("startimport");

Когда я использую -help, он печатает:

-startimport <environment>                    Description

Это хорошо. Но что, если я хочу использовать два аргумента?

Option startimport = OptionBuilder
                .withArgName("firstArg secondArg")
                .hasArgs(2)
                .withDescription("Description")
                .create("startimport ");

Синтаксический анализ двух аргументов не является проблемой, но я хочу следующий вывод в "-help":

startimport <firstArg> <secondArg>                    Description

Но в настоящее время я бы просто получил:

startimport <firstArg secondArg>                    Description

Есть ли правильное решение этой проблемы?

2 ответа

Решение

Я использовал непослушный способ решить эту проблему.

    OptionBuilder.hasArgs(3);
    OptionBuilder.withArgName("hostname> <community> <oid");
    OptionBuilder.withDescription("spans switch topology. Mutually exclusive with -s");
    Option my_a = OptionBuilder.create("a");

Теперь он правильно отображается в справке. Хотя я не уверен, если это имеет последствия, хотя.

Я нашел способ решить эту проблему таким образом, чтобы он вел себя правильно, и подумал, что поделюсь им, потому что это одна из страниц, которую Google привел мне во время исследования. Этот код был написан с использованием Commons CLI 1.2.

Option searchApp = OptionBuilder.withArgName("property> <value")
            .withValueSeparator(' ')
            .hasArgs(2)
            .withLongOpt("test")
            .withDescription("This is a test description.")
            .create("t");

Справочное сообщение выглядит так:

-t,--test <property> <value>    This is a test description.

Его можно использовать из командной строки следующим образом:

java -jar program.jar -t id 5

и String[] аргументов может быть получен в коде так:

Options options = new Options();
options.addOption(searchApp);
PosixParser parser = new PosixParser();
CommandLine cmd = parser.parse( options, args);
String[] searchArgs = cmd.getOptionValues("t");

Затем вы можете получить значения с searchArgs[0] а также searchArgs[1],

Другие вопросы по тегам