Skip to content

Commit 01c29fb

Browse files
authored
feat(usage): redo usage default generation (#39)
1 parent af09dd0 commit 01c29fb

File tree

1 file changed

+39
-22
lines changed
  • core/src/main/java/fr/traqueur/commands/api/models

1 file changed

+39
-22
lines changed

core/src/main/java/fr/traqueur/commands/api/models/Command.java

Lines changed: 39 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import java.util.Arrays;
1212
import java.util.List;
1313
import java.util.stream.Collectors;
14+
import java.util.stream.Stream;
1415

1516
/**
1617
* This class is the base class for all commands.
@@ -501,30 +502,46 @@ public final T getPlugin() {
501502
* @return The default usage of the command.
502503
*/
503504
public String generateDefaultUsage(CommandPlatform<T,S> platform, S sender, String label) {
504-
StringBuilder usage = new StringBuilder();
505-
usage.append("/");
506-
Arrays.stream(label.split("\\.")).forEach(s -> usage.append(s).append(" "));
507-
//remove the last space
508-
if(this.args.isEmpty() && this.optionalArgs.isEmpty()) {
509-
usage.deleteCharAt(usage.length() - 1);
505+
StringBuilder usage = new StringBuilder("/");
506+
507+
String[] parts = label.split("\\.");
508+
usage.append(String.join(" ", parts));
509+
510+
List<Command<T, S>> directSubs = this.getSubcommands().stream()
511+
.filter(sub -> {
512+
String perm = sub.getPermission();
513+
return perm.isEmpty() || platform.hasPermission(sender, perm);
514+
})
515+
.collect(Collectors.toList());
516+
517+
if (!directSubs.isEmpty()) {
518+
usage.append(" <");
519+
String subs = directSubs.stream()
520+
.map(Command::getName)
521+
.map(str -> str.split("\\.")[0])
522+
.collect(Collectors.joining("|"));
523+
usage.append(subs).append(">");
510524
}
511525

512-
StringBuilder firstArg = new StringBuilder();
513-
this.getSubcommands()
514-
.stream().filter(subCommand -> subCommand.getPermission().isEmpty() || platform.hasPermission(sender, subCommand.getPermission()))
515-
.forEach(subCommand -> firstArg.append(subCommand.getName()).append("|"));
516-
if(firstArg.length() > 0) {
517-
firstArg.deleteCharAt(firstArg.length() - 1);
518-
usage.append("<").append(firstArg).append(">");
519-
}
520-
if((!this.getArgs().isEmpty() || !this.getOptinalArgs().isEmpty()) && firstArg.length() > 0) {
521-
usage.append("|");
522-
}
523-
524-
usage.append(this.getArgs().stream().map(argument -> "<" + argument.arg() + ">").collect(Collectors.joining(" ")));
525-
if (!this.getOptinalArgs().isEmpty()) {
526-
usage.append(" ");
527-
usage.append(this.getOptinalArgs().stream().map(argument -> "[" + argument.arg() + "]").collect(Collectors.joining(" ")));
526+
if (!this.getArgs().isEmpty() || !this.getOptinalArgs().isEmpty()) {
527+
usage.append(!directSubs.isEmpty() ? "|" : " ");
528+
529+
// arguments obligatoires : <name:type>
530+
String req = this.getArgs().stream()
531+
.map(arg -> "<" + arg.arg() + ">")
532+
.collect(Collectors.joining(" "));
533+
usage.append(req);
534+
535+
// arguments optionnels : [name:type]
536+
if (!this.getOptinalArgs().isEmpty()) {
537+
if (!req.isEmpty()) {
538+
usage.append(" ");
539+
}
540+
String opt = this.getOptinalArgs().stream()
541+
.map(arg -> "[" + arg.arg() + "]")
542+
.collect(Collectors.joining(" "));
543+
usage.append(opt);
544+
}
528545
}
529546

530547
return usage.toString();

0 commit comments

Comments
 (0)