How are default values and option values for primitive arrays properly specified in PicoCli?
A primitive value can be annotated with a defaultValue
string value:
@Option(
names = {"--one-value"},
defaultValue = "1.25",
description = "one value (default: ${DEFAULT-VALUE})")
private double oneValue;
or set with on the field:
@Option(
names = {"--one-value"},
description = "one value (default: ${DEFAULT-VALUE})")
private double oneValue = 1.25;
In both cases oneValue=1.25
; the description correctly reads as one value (default: 1.25)
; and, the values can be overridden on the command line with:
--one-value=1.23
An array of primitive values, however:
@Option(
names = {"--multiple-values"},
defaultValue = "[0.00, 0.25, 0.50, 1.25]",
paramLabels = "values",
description = "multiple values (default: ${DEFAULT-VALUE})")
private double[] values;
fails with:
Invalid value for option '--multiple-values' (<values>): '[0.00, 0.25, 0.50, 1.25]' is not a double
even though the ${DEFAULT-VALUE}
help says:
--multiple-values=<values> multiple values (default: "[0.00, 0.25, 0.50, 1.25]")
The default values can be set on the field:
@Option(
names = {"--multiple-values"},
defaultValue = "[0.00, 0.25, 0.50, 1.25]",
paramLabels = "values",
description = "one value (default: ${DEFAULT-VALUE})")
private double[] values; = new double[] {0.00, 0.25, 0.50, 1.25};
but in both cases these command line options fail:
--multiple-values="[0.10, 0.20]"
--multiple-values="0.10, 0.20"
--multiple-values=0.10,0.20
with:
'...' is not a double
So, what the right way to set the defaultValues
and command line option for a primitive array?