问题描述
使用 picocli 是否可以实现以下功能?
有效:
-
-A (-B | -C)
-
-D (-B | -C) [(-B | -C) ...]
(-A / -D 不是必需的)
无效:
-
-B 不带 -A 或 -D
-
-C 不带 -A 或 -D
-
-A 与 -B 和 -C
-
-D 与 -B 和 -C
-
-A 没有 (-B | -C)
-
-D 不带 (-B | -C)
谢谢!
解决方法
应该可以使用 picocli 的 argument groups 来实现:
[(-A |-D) (-B | -C) [(-B | -C) ...]]
... 通过为 -A 和 -D 创建一个互斥组,并为 -B 和 -C 创建另一个互斥组(具有多重性 1..*
),并创建这两个组的复合组是相互依赖的。由于不需要 -A 和 -D,因此该复合组的多重性将为 0..1
。