Improve dump command (#412)

This commit is contained in:
Andre_601 2020-08-01 01:59:55 +02:00 committed by GitHub
parent 9412fed9ad
commit e43b7bf205
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -42,9 +42,10 @@ import java.time.Instant;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle; import java.time.format.FormatStyle;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Map;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionException; import java.util.concurrent.CompletionException;
import java.util.logging.Level; import java.util.logging.Level;
@ -52,21 +53,21 @@ import java.util.stream.Collectors;
public final class CommandDump extends PlaceholderCommand public final class CommandDump extends PlaceholderCommand
{ {
@NotNull @NotNull
private static final String URL = "https://paste.helpch.at/"; private static final String URL = "https://paste.helpch.at/";
@NotNull @NotNull
private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG) private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG)
.withLocale(Locale.US) .withLocale(Locale.US)
.withZone(ZoneId.of("UTC")); .withZone(ZoneId.of("UTC"));
public CommandDump() public CommandDump()
{ {
super("dump"); super("dump");
} }
@Override @Override
public void evaluate(@NotNull final PlaceholderAPIPlugin plugin, @NotNull final CommandSender sender, @NotNull final String alias, @NotNull @Unmodifiable final List<String> params) public void evaluate(@NotNull final PlaceholderAPIPlugin plugin, @NotNull final CommandSender sender, @NotNull final String alias, @NotNull @Unmodifiable final List<String> params)
{ {
@ -74,17 +75,17 @@ public final class CommandDump extends PlaceholderCommand
if (exception != null) if (exception != null)
{ {
plugin.getLogger().log(Level.WARNING, "failed to post dump details", exception); plugin.getLogger().log(Level.WARNING, "failed to post dump details", exception);
Msg.msg(sender, Msg.msg(sender,
"&cFailed to post dump details, check console."); "&cFailed to post dump details, check console.");
return; return;
} }
Msg.msg(sender, Msg.msg(sender,
"&aSuccessfully posted dump: " + URL + key); "&aSuccessfully posted dump: " + URL + key);
}); });
} }
@NotNull @NotNull
private CompletableFuture<String> postDump(@NotNull final String dump) private CompletableFuture<String> postDump(@NotNull final String dump)
{ {
@ -95,14 +96,14 @@ public final class CommandDump extends PlaceholderCommand
connection.setRequestMethod("POST"); connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "text/plain; charset=utf-8"); connection.setRequestProperty("Content-Type", "text/plain; charset=utf-8");
connection.setDoOutput(true); connection.setDoOutput(true);
connection.connect(); connection.connect();
try (final OutputStream stream = connection.getOutputStream()) try (final OutputStream stream = connection.getOutputStream())
{ {
stream.write(dump.getBytes(StandardCharsets.UTF_8)); stream.write(dump.getBytes(StandardCharsets.UTF_8));
} }
try (final InputStream stream = connection.getInputStream()) try (final InputStream stream = connection.getInputStream())
{ {
//noinspection UnstableApiUsage //noinspection UnstableApiUsage
@ -116,84 +117,97 @@ public final class CommandDump extends PlaceholderCommand
} }
}); });
} }
@NotNull @NotNull
private String makeDump(@NotNull final PlaceholderAPIPlugin plugin) private String makeDump(@NotNull final PlaceholderAPIPlugin plugin)
{ {
final StringBuilder builder = new StringBuilder(); final StringBuilder builder = new StringBuilder();
builder.append("Generated: ") builder.append("Generated: ")
.append(DATE_FORMAT.format(Instant.now())) .append(DATE_FORMAT.format(Instant.now()))
.append("\n\n"); .append("\n\n");
builder.append("PlaceholderAPI: ") builder.append("PlaceholderAPI: ")
.append(plugin.getDescription().getVersion()) .append(plugin.getDescription().getVersion())
.append("\n\n"); .append("\n\n");
builder.append("Expansions Registered:") builder.append("Expansions Registered:")
.append('\n'); .append('\n');
final List<PlaceholderExpansion> expansions = plugin.getLocalExpansionManager()
final Map<String, List<PlaceholderExpansion>> expansions = plugin.getLocalExpansionManager() .getExpansions()
.getExpansions() .stream()
.stream() .sorted(Comparator.comparing(PlaceholderExpansion::getIdentifier))
.collect(Collectors.groupingBy(PlaceholderExpansion::getAuthor)); .sorted(Comparator.comparing(PlaceholderExpansion::getAuthor))
.collect(Collectors.toList());
for (final Map.Entry<String, List<PlaceholderExpansion>> expansionsByAuthor : expansions.entrySet())
{ int size = 0;
builder.append(" ")
.append(expansionsByAuthor.getKey()) for(final String name : expansions.stream().map(PlaceholderExpansion::getIdentifier).collect(Collectors.toList())){
.append(": ") if (name.length() > size) {
.append('\n'); size = name.length();
for (final PlaceholderExpansion expansion : expansionsByAuthor.getValue())
{
builder.append(" ")
.append(expansion.getName())
.append(':')
.append(expansion.getVersion())
.append('\n');
} }
} }
for (final PlaceholderExpansion expansion : expansions) {
builder.append(" ")
.append(String.format("%-" + size + "s", expansion.getIdentifier()))
.append(" [Author: ")
.append(expansion.getAuthor())
.append(", Version: ")
.append(expansion.getVersion())
.append("]\n");
}
builder.append('\n'); builder.append('\n');
builder.append("Expansions Directory:") builder.append("Expansions Directory:")
.append('\n'); .append('\n');
final String[] jars = plugin.getLocalExpansionManager() final String[] jars = plugin.getLocalExpansionManager()
.getExpansionsFolder() .getExpansionsFolder()
.list((dir, name) -> name.toLowerCase().endsWith(".jar")); .list((dir, name) -> name.toLowerCase().endsWith(".jar"));
for (final String jar : jars) for (final String jar : jars)
{ {
builder.append(" ") builder.append(" ")
.append(jar) .append(jar)
.append('\n'); .append('\n');
} }
builder.append('\n'); builder.append('\n');
builder.append("Server Info: ") builder.append("Server Info: ")
.append(plugin.getServer().getBukkitVersion()) .append(plugin.getServer().getBukkitVersion())
.append('/') .append('/')
.append(plugin.getServer().getVersion()) .append(plugin.getServer().getVersion())
.append("\n\n"); .append("\n\n");
builder.append("Plugin Info:") builder.append("Plugin Info:")
.append('\n'); .append('\n');
for (final Plugin other : plugin.getServer().getPluginManager().getPlugins()) List<Plugin> plugins = Arrays.stream(plugin.getServer().getPluginManager().getPlugins())
.sorted(Comparator.comparing(Plugin::getName))
.collect(Collectors.toList());
for (final String pluginName : plugins.stream().map(Plugin::getName).collect(Collectors.toList())) {
if (pluginName.length() > size) {
size = pluginName.length();
}
}
for (final Plugin other : plugins)
{ {
builder.append(" ") builder.append(" ")
.append(other.getName()) .append(String.format("%-" + size + "s", other.getName()))
.append(": ") .append(" [Version: ")
.append(other.getDescription().getVersion()) .append(other.getDescription().getVersion())
.append('\n'); .append("]")
.append("\n");
} }
return builder.toString(); return builder.toString();
} }
} }