Register option without prefix
- While option should be defined i.e. using "--arg", discover prefix from ShellMethod#prefix and use that if just "arg" is defined. - Backport #575 - Fixes #577
This commit is contained in:
@@ -118,6 +118,14 @@ public class StandardMethodTargetRegistrar implements MethodTargetRegistrar, App
|
||||
else if (o.length() == stripped.length() + 1 && stripped.length() == 1) {
|
||||
shortNames.add(stripped.charAt(0));
|
||||
}
|
||||
else if (o.length() == stripped.length()) {
|
||||
if ("--".equals(shellMapping.prefix())) {
|
||||
longNames.add(stripped);
|
||||
}
|
||||
else if ("-".equals(shellMapping.prefix()) && stripped.length() == 1) {
|
||||
shortNames.add(stripped.charAt(0));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -443,4 +443,44 @@ public class StandardMethodTargetRegistrarTests {
|
||||
public void foo3(@ShellOption boolean arg1) {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOptionWithoutHyphenRegisterFromDefaultPrefix() {
|
||||
applicationContext = new AnnotationConfigApplicationContext(OptionWithoutHyphenRegisterFromDefaultPrefix.class);
|
||||
registrar.setApplicationContext(applicationContext);
|
||||
registrar.register(catalog);
|
||||
|
||||
assertThat(catalog.getRegistrations().get("foo1")).isNotNull();
|
||||
assertThat(catalog.getRegistrations().get("foo1").getOptions()).hasSize(1);
|
||||
assertThat(catalog.getRegistrations().get("foo1").getOptions().get(0).getLongNames()).hasSize(1);
|
||||
assertThat(catalog.getRegistrations().get("foo1").getOptions().get(0).getShortNames()).hasSize(0);
|
||||
}
|
||||
|
||||
@ShellComponent
|
||||
public static class OptionWithoutHyphenRegisterFromDefaultPrefix {
|
||||
|
||||
@ShellMethod(value = "foo1")
|
||||
public void foo1(@ShellOption("xxx") boolean arg1) {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOptionWithoutHyphenRegisterFromChangedPrefix() {
|
||||
applicationContext = new AnnotationConfigApplicationContext(OptionWithoutHyphenRegisterFromChangedPrefix.class);
|
||||
registrar.setApplicationContext(applicationContext);
|
||||
registrar.register(catalog);
|
||||
|
||||
assertThat(catalog.getRegistrations().get("foo1")).isNotNull();
|
||||
assertThat(catalog.getRegistrations().get("foo1").getOptions()).hasSize(1);
|
||||
assertThat(catalog.getRegistrations().get("foo1").getOptions().get(0).getLongNames()).hasSize(0);
|
||||
assertThat(catalog.getRegistrations().get("foo1").getOptions().get(0).getShortNames()).hasSize(1);
|
||||
}
|
||||
|
||||
@ShellComponent
|
||||
public static class OptionWithoutHyphenRegisterFromChangedPrefix {
|
||||
|
||||
@ShellMethod(value = "foo1", prefix = "-")
|
||||
public void foo1(@ShellOption("x") boolean arg1) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user