diff --git a/cloud-annotations/src/main/java/cloud/commandframework/annotations/AnnotationParser.java b/cloud-annotations/src/main/java/cloud/commandframework/annotations/AnnotationParser.java index c15bc765..9f6888d4 100644 --- a/cloud-annotations/src/main/java/cloud/commandframework/annotations/AnnotationParser.java +++ b/cloud-annotations/src/main/java/cloud/commandframework/annotations/AnnotationParser.java @@ -216,7 +216,7 @@ public final class AnnotationParser { } if (method.isAnnotationPresent(CommandPermission.class)) { - builder = builder.withPermission(method.getAnnotation(CommandPermission.class).value()); + builder = builder.permission(method.getAnnotation(CommandPermission.class).value()); } if (commandMethod.requiredSender() != Object.class) { diff --git a/cloud-annotations/src/main/java/cloud/commandframework/annotations/CommandPermission.java b/cloud-annotations/src/main/java/cloud/commandframework/annotations/CommandPermission.java index 0cf82cd7..aac3d23e 100644 --- a/cloud-annotations/src/main/java/cloud/commandframework/annotations/CommandPermission.java +++ b/cloud-annotations/src/main/java/cloud/commandframework/annotations/CommandPermission.java @@ -29,7 +29,7 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** - * Equivalent to {@link cloud.commandframework.Command.Builder#withPermission(String)} + * Equivalent to {@link cloud.commandframework.Command.Builder#permission(String)} */ @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) diff --git a/cloud-core/src/main/java/cloud/commandframework/Command.java b/cloud-core/src/main/java/cloud/commandframework/Command.java index 2a3dd0fe..35b7faf5 100644 --- a/cloud-core/src/main/java/cloud/commandframework/Command.java +++ b/cloud-core/src/main/java/cloud/commandframework/Command.java @@ -659,7 +659,7 @@ public class Command { * @param permission Command permission * @return New builder instance using the command permission */ - public @NonNull Builder withPermission(final @NonNull CommandPermission permission) { + public @NonNull Builder permission(final @NonNull CommandPermission permission) { return new Builder<>( this.commandManager, this.commandMeta, @@ -677,7 +677,7 @@ public class Command { * @param permission Command permission * @return New builder instance using the command permission */ - public @NonNull Builder withPermission(final @NonNull String permission) { + public @NonNull Builder permission(final @NonNull String permission) { return new Builder<>( this.commandManager, this.commandMeta, @@ -710,7 +710,7 @@ public class Command { builder = builder.argument(builtArgument, Description.of(command.getArgumentDescription(argument))); } if (this.commandPermission.toString().isEmpty()) { - builder = builder.withPermission(command.getCommandPermission()); + builder = builder.permission(command.getCommandPermission()); } return builder.handler(command.commandExecutionHandler); } diff --git a/cloud-core/src/main/java/cloud/commandframework/arguments/standard/StringArgument.java b/cloud-core/src/main/java/cloud/commandframework/arguments/standard/StringArgument.java index b1a3a5b1..952b36eb 100644 --- a/cloud-core/src/main/java/cloud/commandframework/arguments/standard/StringArgument.java +++ b/cloud-core/src/main/java/cloud/commandframework/arguments/standard/StringArgument.java @@ -132,6 +132,39 @@ public final class StringArgument extends CommandArgument { return StringArgument.newBuilder(name).asOptionalWithDefault(defaultString).build(); } + /** + * Create a new required command argument with the 'single' parsing mode + * + * @param name Argument name + * @param Command sender type + * @return Created argument + */ + public static @NonNull CommandArgument single(final @NonNull String name) { + return of(name, StringMode.SINGLE); + } + + /** + * Create a new required command argument with the 'greedy' parsing mode + * + * @param name Argument name + * @param Command sender type + * @return Created argument + */ + public static @NonNull CommandArgument greedy(final @NonNull String name) { + return of(name, StringMode.GREEDY); + } + + /** + * Create a new required command argument with the 'quoted' parsing mode + * + * @param name Argument name + * @param Command sender type + * @return Created argument + */ + public static @NonNull CommandArgument quoted(final @NonNull String name) { + return of(name, StringMode.QUOTED); + } + /** * Get the string mode * @@ -158,6 +191,12 @@ public final class StringArgument extends CommandArgument { super(String.class, name); } + /** + * Set the String mode + * + * @param stringMode String mode to parse with + * @return Builder instance + */ private @NonNull Builder withMode(final @NonNull StringMode stringMode) { this.stringMode = stringMode; return this; diff --git a/cloud-core/src/test/java/cloud/commandframework/CommandPermissionTest.java b/cloud-core/src/test/java/cloud/commandframework/CommandPermissionTest.java index 684c18d2..6078956d 100644 --- a/cloud-core/src/test/java/cloud/commandframework/CommandPermissionTest.java +++ b/cloud-core/src/test/java/cloud/commandframework/CommandPermissionTest.java @@ -37,10 +37,10 @@ class CommandPermissionTest { @BeforeAll static void setup() { - manager.command(manager.commandBuilder("test").literal("foo").withPermission("test.permission.one").build()); - manager.command(manager.commandBuilder("test").literal("bar").withPermission("test.permission.two").build()); - manager.command(manager.commandBuilder("test").literal("fizz").withPermission("test.permission.three").build()); - manager.command(manager.commandBuilder("test").literal("buzz").withPermission("test.permission.four").build()); + manager.command(manager.commandBuilder("test").literal("foo").permission("test.permission.one").build()); + manager.command(manager.commandBuilder("test").literal("bar").permission("test.permission.two").build()); + manager.command(manager.commandBuilder("test").literal("fizz").permission("test.permission.three").build()); + manager.command(manager.commandBuilder("test").literal("buzz").permission("test.permission.four").build()); } @Test diff --git a/cloud-core/src/test/java/cloud/commandframework/CommandTreeTest.java b/cloud-core/src/test/java/cloud/commandframework/CommandTreeTest.java index c3dc2f58..3a8ec332 100644 --- a/cloud-core/src/test/java/cloud/commandframework/CommandTreeTest.java +++ b/cloud-core/src/test/java/cloud/commandframework/CommandTreeTest.java @@ -55,7 +55,7 @@ class CommandTreeTest { manager.command(manager.commandBuilder("test", SimpleCommandMeta.empty()) .literal("one").build()) .command(manager.commandBuilder("test", SimpleCommandMeta.empty()) - .literal("two").withPermission("no").build()) + .literal("two").permission("no").build()) .command(manager.commandBuilder("test", Collections.singleton("other"), SimpleCommandMeta.empty() ) @@ -79,11 +79,11 @@ class CommandTreeTest { /* Build command for testing intermediary and final executors */ manager.command(manager.commandBuilder("command") - .withPermission("command.inner") + .permission("command.inner") .literal("inner") .handler(c -> System.out.println("Using inner command"))); manager.command(manager.commandBuilder("command") - .withPermission("command.outer") + .permission("command.outer") .handler(c -> System.out.println("Using outer command"))); /* Build command for testing compound types */