mirror of
https://github.com/GayPizzaSpecifications/foundation.git
synced 2025-08-03 05:30:55 +00:00
Rework command output.
This commit is contained in:
parent
42f5f33149
commit
10f6bf98dd
7
src/main/java/cloud/kubelet/foundation/TextColors.java
Normal file
7
src/main/java/cloud/kubelet/foundation/TextColors.java
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
package cloud.kubelet.foundation;
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.format.TextColor;
|
||||||
|
|
||||||
|
public final class TextColors {
|
||||||
|
public static final TextColor AMARANTH_PINK = TextColor.fromHexString("#F7A8B8");
|
||||||
|
}
|
@ -1,15 +1,29 @@
|
|||||||
package cloud.kubelet.foundation;
|
package cloud.kubelet.foundation;
|
||||||
|
|
||||||
import java.io.IOException;
|
import net.kyori.adventure.text.Component;
|
||||||
import java.util.List;
|
import net.kyori.adventure.text.format.TextColor;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
||||||
public class Util {
|
public class Util {
|
||||||
public static int runProcess(List<String> command) throws IOException, InterruptedException {
|
|
||||||
return new ProcessBuilder(command).start().waitFor();
|
private static final Component leftBracket = Component.text('[');
|
||||||
}
|
private static final Component rightBracket = Component.text(']');
|
||||||
|
private static final Component whitespace = Component.text(' ');
|
||||||
|
private static final Component foundationName = Component.text("Foundation");
|
||||||
|
|
||||||
public static void printFeatureStatus(Logger logger, String feature, boolean state) {
|
public static void printFeatureStatus(Logger logger, String feature, boolean state) {
|
||||||
logger.info("{}: {}", feature, state ? "Enabled" : "Disabled");
|
logger.info("{}: {}", feature, state ? "Enabled" : "Disabled");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Component formatSystemMessage(String message) {
|
||||||
|
return formatSystemMessage(TextColors.AMARANTH_PINK, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Component formatSystemMessage(TextColor prefixColor, String message) {
|
||||||
|
return leftBracket
|
||||||
|
.append(foundationName.color(prefixColor))
|
||||||
|
.append(rightBracket)
|
||||||
|
.append(whitespace)
|
||||||
|
.append(Component.text(message));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package cloud.kubelet.foundation.command;
|
package cloud.kubelet.foundation.command;
|
||||||
|
|
||||||
import cloud.kubelet.foundation.Foundation;
|
import cloud.kubelet.foundation.Foundation;
|
||||||
|
import cloud.kubelet.foundation.Util;
|
||||||
import java.io.BufferedOutputStream;
|
import java.io.BufferedOutputStream;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
@ -15,6 +16,7 @@ import java.util.zip.ZipEntry;
|
|||||||
import java.util.zip.ZipOutputStream;
|
import java.util.zip.ZipOutputStream;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.format.TextColor;
|
import net.kyori.adventure.text.format.TextColor;
|
||||||
|
import org.bukkit.Server;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandExecutor;
|
import org.bukkit.command.CommandExecutor;
|
||||||
@ -61,19 +63,23 @@ public class BackupCommand implements CommandExecutor {
|
|||||||
private void runBackup(CommandSender sender) throws IOException {
|
private void runBackup(CommandSender sender) throws IOException {
|
||||||
RUNNING.set(true);
|
RUNNING.set(true);
|
||||||
|
|
||||||
|
final var server = sender.getServer();
|
||||||
|
server.sendMessage(Util.formatSystemMessage("Backup started."));
|
||||||
|
|
||||||
final var backupFile = backupPath.resolve(
|
final var backupFile = backupPath.resolve(
|
||||||
String.format("backup-%s.zip", Instant.now().toString())).toFile();
|
String.format("backup-%s.zip", Instant.now().toString())).toFile();
|
||||||
final var zipFileStream = new FileOutputStream(backupFile);
|
final var zipFileStream = new FileOutputStream(backupFile);
|
||||||
|
|
||||||
try (zipFileStream; var zipStream = new ZipOutputStream(
|
try (zipFileStream; var zipStream = new ZipOutputStream(
|
||||||
new BufferedOutputStream(zipFileStream))) {
|
new BufferedOutputStream(zipFileStream))) {
|
||||||
final var worlds = sender.getServer().getWorlds();
|
final var worlds = server.getWorlds();
|
||||||
for (World world : worlds) {
|
for (World world : worlds) {
|
||||||
final var name = world.getName();
|
|
||||||
final var worldPath = world.getWorldFolder().toPath().toString();
|
final var worldPath = world.getWorldFolder().toPath().toString();
|
||||||
sender.sendMessage(String.format("%s: %s", name, worldPath));
|
|
||||||
|
|
||||||
|
// Save the world.
|
||||||
world.save();
|
world.save();
|
||||||
|
|
||||||
|
// Disable auto saving to prevent any world corruption while creating a ZIP.
|
||||||
world.setAutoSave(false);
|
world.setAutoSave(false);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -96,10 +102,12 @@ public class BackupCommand implements CommandExecutor {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Re-enable auto saving for this world.
|
||||||
world.setAutoSave(true);
|
world.setAutoSave(true);
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
RUNNING.set(false);
|
RUNNING.set(false);
|
||||||
|
server.sendMessage(Util.formatSystemMessage("Backup finished."));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user