В настоящее время я пытаюсь найти способ создания параметра командной строки, который при наличии может принимать либо один обязательный аргумент, либо второй необязательный аргумент (в дополнение к обязательному).Я пытаюсь добиться этого, используя Apache Commons Cli.
т.е. myProgram -a [целое число]
myProgram -a "test" --> isValid
myProgram -a "test" 2 --> also isValid
Я пытался: Option.builder("a").hasArg().numberOfArgs(2).optionalArg(true).build();
&
Option.builder("a").hasArg().numberOfArgs(2).build();
Ни один из них не работает должным образом.В первом примере оба аргумента необязательны и допускают передачу пустых аргументов, что противоречит требованиям.
Во втором примере оба параметра обязательны и завершаются неудачно, если указан только строковый тип arg.
Я просмотрел документацию для обыкновенных клиентов, но предоставленные ими варианты использования не затрагивали сложные случаи, подобные этой, и аналогичным образом не получили много подробностей из документации api.
Я ожидаю, что программа завершится ошибкой, когда -aпредоставляется без значения, но для успеха, если предоставляется 1 или 2 аргумента, как показано ранее.