Как обеспечить предоставление всех аргументов в CLI Apache Commons?
Я не вижу стандартного способа проверки наличия всех опций во входных данных String[] библиотеки CLI apache. То есть - все мои параметры REUIRED в командной строке, в противном случае, я хочу, чтобы сгенерировать исключение.
Я пытаюсь следующее как обходной путь, но получаю исключение Nullpointer в операторе if...
PosixParser p = new PosixParser();
CommandLine cli=p.parse(options,args);
for(Object o : options.getOptions())
{
Option op = (Option)o;
if(cli.getOptionValue(op.getName()))
throw new ParseException("Missing argument ! " + op.getArgName() + ":"+op.getDescription());
}
ОБНОВЛЕНИЕ НА ЭТОМ: метод getOpt(), кажется, обеспечивает короткое имя аргумента.
Однако, если я заменю op.getName() на opt.getLongName()... это работает!
В любом случае.. У меня есть 2 вопроса:
1) Почему опция имеет нулевое имя, но ненулевое longName?
2) Есть ли способ просто убедиться, что во всех опциях указана строка []? Например, я хотел бы позвонить:
if(! options.isAllProvided())
throw new ParseException("You are missing some options ! " + StringUtils.join(userInputArray,','));
1 ответ
Вот как вы можете установить требуемый параметр:
Option logfile = OptionBuilder.withArgName( "file" )
.isRequired() // make it required
.hasArg()
.withDescription( "use given file for log" )
.create( "logfile" );
(Я не думаю, что есть простой способ сделать все необходимые параметры за один шаг)