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);
      }
   }
}