Fix plugin whitespace in file name

This commit is contained in:
Frank van der Heijden 2021-10-08 14:21:58 +02:00
parent d2a6533c67
commit ba8511cbcb
No known key found for this signature in database
GPG key ID: B808721C2DD5B5B8

View file

@ -7,6 +7,7 @@ import cloud.commandframework.context.CommandContext;
import cloud.commandframework.exceptions.parsing.NoInputProvidedException; import cloud.commandframework.exceptions.parsing.NoInputProvidedException;
import io.leangen.geantyref.TypeToken; import io.leangen.geantyref.TypeToken;
import java.io.File; import java.io.File;
import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Queue; import java.util.Queue;
@ -45,18 +46,45 @@ public class JarFilesArgument<C extends ServerUtilsAudience<?>> extends CommandA
} }
Set<String> pluginFiles = new HashSet<>(plugin.getPluginManager().getPluginFileNames()); Set<String> pluginFiles = new HashSet<>(plugin.getPluginManager().getPluginFileNames());
File[] files = new File[inputQueue.size()]; List<File> files = new ArrayList<>(inputQueue.size());
for (int i = 0; i < files.length; i++) { while (!inputQueue.isEmpty()) {
if (!pluginFiles.contains(inputQueue.peek())) { StringBuilder builder = new StringBuilder(inputQueue.peek());
if (builder.length() == 0) {
return ArgumentParseResult.failure(new IllegalArgumentException( return ArgumentParseResult.failure(new IllegalArgumentException(
"Plugin '" + inputQueue.peek() + "' does not exist!" "Specified argument is empty"
));
}
inputQueue.remove();
final String pluginFileName;
if (builder.charAt(0) == '"') {
while (!inputQueue.isEmpty()) {
if (builder.length() > 1 && builder.charAt(builder.length() - 1) == '"') {
break;
}
builder.append(" ").append(inputQueue.remove());
}
if (builder.charAt(builder.length() - 1) != '"') {
return ArgumentParseResult.failure(new IllegalArgumentException(
"Could not find closing '\"' character"
));
}
pluginFileName = builder.substring(1, builder.length() - 1);
} else {
pluginFileName = builder.toString();
}
if (!pluginFiles.contains(pluginFileName)) {
return ArgumentParseResult.failure(new IllegalArgumentException(
"Plugin '" + pluginFileName + "' does not exist!"
)); ));
} }
files[i] = new File(plugin.getPluginManager().getPluginsFolder(), inputQueue.remove()); files.add(new File(plugin.getPluginManager().getPluginsFolder(), pluginFileName));
} }
return ArgumentParseResult.success(files); return ArgumentParseResult.success(files.toArray(new File[0]));
} }
@Override @Override