Skip to content

Commit f308d44

Browse files
committed
Add optional service provider argument
1 parent ddeae26 commit f308d44

1 file changed

Lines changed: 24 additions & 13 deletions

File tree

plugin/src/main/java/net/thenextlvl/service/plugin/commands/ServiceTestCommand.java

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import net.thenextlvl.service.hologram.HologramController;
1414
import net.thenextlvl.service.permission.PermissionController;
1515
import net.thenextlvl.service.plugin.ServicePlugin;
16+
import net.thenextlvl.service.plugin.commands.arguments.ControllerArgumentType;
1617
import net.thenextlvl.service.plugin.commands.brigadier.BrigadierCommand;
1718
import net.thenextlvl.service.plugin.commands.test.CharacterTestSuite;
1819
import net.thenextlvl.service.plugin.commands.test.ChatTestSuite;
@@ -48,24 +49,34 @@ public static LiteralArgumentBuilder<CommandSourceStack> create(final ServicePlu
4849
}
4950

5051
private <C extends Controller> LiteralArgumentBuilder<CommandSourceStack> buildSuite(final String name, final TestSuite.Entry<C> entry) {
51-
return Commands.literal(name).executes(context -> {
52+
final var argument = new ControllerArgumentType<>(plugin, entry.controllerType(), (context, controller) -> true);
53+
final var provider = Commands.argument("provider", argument);
54+
return Commands.literal(name).then(provider.executes(context -> {
55+
final var controller = context.getArgument("provider", entry.controllerType());
56+
return runSuite(context.getSource(), entry, controller);
57+
})).executes(context -> {
5258
final var sender = context.getSource().getSender();
5359
final var controller = plugin.getServer().getServicesManager().load(entry.controllerType());
5460
final var displayName = ServiceInfoCommand.translate(plugin, sender, entry.controllerType());
5561

56-
if (controller == null) {
57-
plugin.bundle().sendMessage(sender, "service.missing", Placeholder.component("service", displayName));
58-
return 0;
59-
}
62+
if (controller != null) return runSuite(context.getSource(), entry, controller);
63+
64+
plugin.bundle().sendMessage(sender, "service.missing", Placeholder.component("service", displayName));
65+
return 0;
6066

61-
plugin.bundle().sendMessage(sender, "service.test.started",
62-
Placeholder.component("service", displayName),
63-
Placeholder.parsed("provider", controller.getName()));
64-
entry.factory().create(plugin, context.getSource(), controller).execute();
65-
plugin.bundle().sendMessage(sender, "service.test.completed",
66-
Placeholder.component("service", displayName),
67-
Placeholder.parsed("provider", controller.getName()));
68-
return Command.SINGLE_SUCCESS;
6967
});
7068
}
69+
70+
private <C extends Controller> int runSuite(final CommandSourceStack source, final TestSuite.Entry<C> entry, final C controller) {
71+
final var displayName = ServiceInfoCommand.translate(plugin, source.getSender(), entry.controllerType());
72+
73+
plugin.bundle().sendMessage(source.getSender(), "service.test.started",
74+
Placeholder.component("service", displayName),
75+
Placeholder.parsed("provider", controller.getName()));
76+
entry.factory().create(plugin, source, controller).execute();
77+
plugin.bundle().sendMessage(source.getSender(), "service.test.completed",
78+
Placeholder.component("service", displayName),
79+
Placeholder.parsed("provider", controller.getName()));
80+
return Command.SINGLE_SUCCESS;
81+
}
7182
}

0 commit comments

Comments
 (0)