UpdateSetupCommand class
Пакет: com.hypixel.hytale.server.core.update.command
Файл: com/hypixel/hytale/server/core/update/command/UpdateSetupCommand.java
extends: CommandBase
Поля (6)
| Модификаторы | Тип | Имя |
|---|---|---|
|
boolean |
var2 |
|
Path |
var3 |
|
Path |
var4 |
|
Path |
var5 |
|
Path |
var6 |
|
boolean |
var7 |
Методы (6)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
throw new |
IOExceptionthrow new IOException("Resource not found in JAR: " + var1) |
private |
void |
extractResourcevoid extractResource(@Nonnull String var1, @Nonnull Path var2) |
|
|
if if(Constants.BOOTSTRAP) |
|
|
if if(var7 && !var2) |
|
|
if if(var3 == null) |
abstract |
|
super super("setup", "server.commands.update.setup.desc") |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.update.command;
class="kw">import com.hypixel.hytale.common.util.java.ManifestUtil;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.server.core.Constants;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.command.system.CommandContext;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
class="kw">import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
class="kw">import java.io.IOException;
class="kw">import java.io.InputStream;
class="kw">import java.nio.file.Files;
class="kw">import java.nio.file.Path;
class="kw">import java.nio.file.StandardCopyOption;
class="kw">import java.util.Locale;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">public class UpdateSetupCommand class="kw">extends CommandBase {
@Nonnull
class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
class="kw">private class="kw">static class="kw">final String RESOURCE_START_SH = "update/start.sh";
class="kw">private class="kw">static class="kw">final String RESOURCE_START_BAT = "update/start.bat";
class="kw">private class="kw">static class="kw">final String EXPECTED_DIR_NAME = "Server";
class="kw">private class="kw">static class="kw">final Message MSG_NOT_JAR = Message.translation("server.commands.update.setup.not_jar");
class="kw">private class="kw">static class="kw">final Message MSG_INVALID_DIRECTORY = Message.translation("server.commands.update.setup.invalid_directory");
class="kw">private class="kw">static class="kw">final Message MSG_ALREADY_EXIST = Message.translation("server.commands.update.setup.already_exist");
class="kw">private class="kw">static class="kw">final Message MSG_SETUP_COMPLETE = Message.translation("server.commands.update.setup.complete");
class="kw">private class="kw">static class="kw">final Message MSG_SETUP_FAILED = Message.translation("server.commands.update.setup.failed");
class="kw">private class="kw">static class="kw">final Message MSG_NO_ASSETS = Message.translation("server.commands.update.setup.no_assets");
class="kw">private class="kw">final FlagArg forceFlag = this.withFlagArg("force", "server.commands.update.setup.force.desc");
class="kw">public UpdateSetupCommand() {
super("setup", "server.commands.update.setup.desc");
}
@Override
class="kw">protected void executeSync(@Nonnull CommandContext var1) {
if (Constants.BOOTSTRAP) {
UpdateDownloadCommand.runBootstrapInstall(var1);
} else if (!ManifestUtil.isJar()) {
var1.sendMessage(MSG_NOT_JAR);
} else {
boolean var2 = this.forceFlag.get(var1);
Path var3 = Path.of(".").toAbsolutePath().normalize();
if (!"Server".equals(var3.getFileName().toString()) && !var2) {
var1.sendMessage(MSG_INVALID_DIRECTORY);
} else {
Path var4 = var3.getParent();
Path var5 = var4.resolve("start.sh");
Path var6 = var4.resolve("start.bat");
boolean var7 = Files.exists(var5) || Files.exists(var6);
if (var7 && !var2) {
var1.sendMessage(MSG_ALREADY_EXIST);
} else {
try {
this.extractResource("update/start.sh", var5);
this.extractResource("update/start.bat", var6);
if (!System.getProperty("os.name", "").toLowerCase(Locale.ROOT).contains("win")) {
var5.toFile().setExecutable(true, false);
}
var1.sendMessage(MSG_SETUP_COMPLETE);
LOGGER.at(Level.INFO).log("Wrapper scripts written to %s", var4);
if (!Files.exists(var4.resolve("Assets.zip"))) {
var1.sendMessage(MSG_NO_ASSETS);
}
} catch (IOException var9) {
((HytaleLogger.Api)LOGGER.at(Level.SEVERE).withCause(var9)).log("Failed to extract wrapper scripts");
var1.sendMessage(MSG_SETUP_FAILED);
}
}
}
}
}
class="kw">private void extractResource(@Nonnull String var1, @Nonnull Path var2) class="kw">throws IOException {
try (InputStream var3 = this.getClass().getClassLoader().getResourceAsStream(var1)) {
if (var3 == null) {
throw new IOException("Resource not found in JAR: " + var1);
}
Files.createDirectories(var2.getParent());
Files.copy(var3, var2, StandardCopyOption.REPLACE_EXISTING);
}
}
}