Allow argument descriptions to be set using the @Argument annotation

This commit is contained in:
Alexander Söderberg 2020-09-21 19:51:17 +02:00
parent d6ce74f2d9
commit e72a876037
No known key found for this signature in database
GPG key ID: C0207FF7EA146678
3 changed files with 17 additions and 4 deletions

View file

@ -170,12 +170,14 @@ public final class AnnotationParser<C> {
this.createMeta(method.getAnnotations()));
final Collection<ArgumentParameterPair> arguments = this.getArguments(method);
final Map<String, CommandArgument<C, ?>> commandArguments = Maps.newHashMap();
final Map<CommandArgument<C, ?>, String> argumentDescriptions = Maps.newHashMap();
/* Go through all annotated parameters and build up the argument tree */
for (final ArgumentParameterPair argumentPair : arguments) {
final CommandArgument<C, ?> argument = this.buildArgument(method,
tokens.get(argumentPair.getArgument().value()),
argumentPair);
commandArguments.put(argument.getName(), argument);
argumentDescriptions.put(argument, argumentPair.getArgument().description());
}
boolean commandNameFound = false;
/* Build the command tree */
@ -194,7 +196,10 @@ public final class AnnotationParser<C> {
entry.getKey(), method.getName()
));
}
builder = builder.argument(argument);
final String description = argumentDescriptions.getOrDefault(argument, "");
builder = builder.argument(argument, description);
}
}
/* Try to find the command sender type */

View file

@ -56,4 +56,11 @@ public @interface Argument {
*/
String defaultValue() default "";
/**
* The argument description
*
* @return Argument description
*/
String description() default "";
}