Default boolean arg to false

- In a case where arg is given as boolean and with plain
  @ShellOption (user doesn't define defaults), configure
  arg not to be mandatory and with default value false.
- This brings this spesific case more close how it behave
  in older shell version.
- Having `@ShellOption boolean arg1` it now works as:
    my-shell:>e2e reg default-value-boolean3
    Hello false
    my-shell:>e2e reg default-value-boolean3 --arg1
    Hello true
    my-shell:>e2e reg default-value-boolean3 --arg1 false
    Hello false
    my-shell:>e2e reg default-value-boolean3 --arg1 true
    Hello true
- Fixes #461
This commit is contained in:
Janne Valkealahti
2022-07-18 10:29:31 +01:00
parent 5ba8e185bc
commit 643b189fb8
4 changed files with 504 additions and 1 deletions

View File

@@ -158,7 +158,13 @@ public class StandardMethodTargetRegistrar implements MethodTargetRegistrar, App
optionSpec.defaultValue(so.defaultValue());
}
if (ObjectUtils.nullSafeEquals(so.defaultValue(), ShellOption.NONE)) {
optionSpec.required();
if (ClassUtils.isAssignable(boolean.class, parameterType)) {
optionSpec.required(false);
optionSpec.defaultValue("false");
}
else {
optionSpec.required();
}
}
if (!ClassUtils.isAssignable(NoValueProvider.class, so.valueProvider())) {
CompletionResolver completionResolver = ctx -> {