Я хотел бы создать команду, которая позволяет пользователю указать одну из доступных опций для выполнения команды. Например, здесь приведен список услуг, а команда — это статус. Пользователь может ввести команду 'status --list scarlet garnet cardinal' для частичного набора или 'status --all' для полного набора услуг. Я реализовал следующее:
@Command(name = "status", description = "checks the status of a service")
public void status(
@Option(names = "--all", description = "checks all services.") boolean all,
@Option(names = "--list", arity = "0..1", description = "checks specified services.") boolean list,
@Parameters(paramLabel = "<service>", description = "a list of service names") List<String> services) {
if (all) {
System.out.println("check all");
} else if (list) {
System.out.println("check listed");
}
}
Это работает, однако есть ошибка, то есть, если пользователь просто указывает команду только status без каких-либо дополнительных аргументов, она считается действительной. Я считаю, что это происходит потому, что оба параметра являются логическими. Как мы можем исправить это, чтобы иметь хотя бы одну из дополнительных опций?