Package ch.njol.skript.log

Examples of ch.njol.skript.log.RedirectingLogHandler


  public boolean onCommand(final @Nullable CommandSender sender, final @Nullable Command command, final @Nullable String label, final @Nullable String[] args) {
    if (sender == null || command == null || label == null || args == null)
      throw new IllegalArgumentException();
    if (!skriptCommandHelp.test(sender, args))
      return true;
    final RedirectingLogHandler r = SkriptLogger.startLogHandler(new RedirectingLogHandler(sender, ""));
    try {
      if (args[0].equalsIgnoreCase("reload")) {
        if (args[1].equalsIgnoreCase("all")) {
          reloading(sender, "config and scripts");
          Skript.reload();
          reloaded(sender, r, "config and scripts");
        } else if (args[1].equalsIgnoreCase("scripts")) {
          reloading(sender, "scripts");
          Skript.reloadScripts();
          reloaded(sender, r, "scripts");
        } else if (args[1].equalsIgnoreCase("config")) {
          reloading(sender, "main config");
          Skript.reloadMainConfig();
          reloaded(sender, r, "main config");
        } else if (args[1].equalsIgnoreCase("aliases")) {
          reloading(sender, "aliases");
          Skript.reloadAliases();
          reloaded(sender, r, "aliases");
        } else {
          final File f = getScriptFromArgs(sender, args, 1);
          if (f == null)
            return true;
          if (!f.isDirectory()) {
            if (f.getName().startsWith("-")) {
              info(sender, "reload.script disabled", f.getName().substring(1));
              return true;
            }
            reloading(sender, "script", f.getName());
            ScriptLoader.unloadScript(f);
            ScriptLoader.loadScripts(new File[] {f});
            reloaded(sender, r, "script", f.getName());
          } else {
            reloading(sender, "scripts in folder", f.getName());
            final int disabled = ScriptLoader.unloadScripts(f).files;
            final int enabled = ScriptLoader.loadScripts(f).files;
            if (Math.max(disabled, enabled) == 0)
              info(sender, "reload.empty folder", f.getName());
            else
              reloaded(sender, r, "x scripts in folder", f.getName(), Math.max(disabled, enabled));
          }
        }
      } else if (args[0].equalsIgnoreCase("enable")) {
        if (args[1].equals("all")) {
          try {
            info(sender, "enable.all.enabling");
            final File[] files = toggleScripts(new File(Skript.getInstance().getDataFolder(), Skript.SCRIPTSFOLDER), true).toArray(new File[0]);
            assert files != null;
            ScriptLoader.loadScripts(files);
            if (r.numErrors() == 0) {
              info(sender, "enable.all.enabled");
            } else {
              error(sender, "enable.all.error", r.numErrors());
            }
          } catch (final IOException e) {
            error(sender, "enable.all.io error", ExceptionUtils.toString(e));
          }
        } else {
          File f = getScriptFromArgs(sender, args, 1);
          if (f == null)
            return true;
          if (!f.isDirectory()) {
            if (!f.getName().startsWith("-")) {
              info(sender, "enable.single.already enabled", f.getName(), StringUtils.join(args, " ", 1, args.length));
              return true;
            }
           
            try {
              f = FileUtils.move(f, new File(f.getParentFile(), f.getName().substring(1)), false);
            } catch (final IOException e) {
              error(sender, "enable.single.io error", f.getName().substring(1), ExceptionUtils.toString(e));
              return true;
            }
           
            info(sender, "enable.single.enabling", f.getName());
            ScriptLoader.loadScripts(new File[] {f});
            if (r.numErrors() == 0) {
              info(sender, "enable.single.enabled", f.getName());
            } else {
              error(sender, "enable.single.error", f.getName(), r.numErrors());
            }
            return true;
          } else {
            final Collection<File> scripts;
            try {
              scripts = toggleScripts(f, true);
            } catch (final IOException e) {
              error(sender, "enable.folder.io error", f.getName(), ExceptionUtils.toString(e));
              return true;
            }
            if (scripts.isEmpty()) {
              info(sender, "enable.folder.empty", f.getName());
              return true;
            }
            info(sender, "enable.folder.enabling", f.getName(), scripts.size());
            final File[] ss = scripts.toArray(new File[scripts.size()]);
            assert ss != null;
            final ScriptInfo i = ScriptLoader.loadScripts(ss);
            assert i.files == scripts.size();
            if (r.numErrors() == 0) {
              info(sender, "enable.folder.enabled", f.getName(), i.files);
            } else {
              error(sender, "enable.folder.error", f.getName(), r.numErrors());
            }
            return true;
          }
        }
      } else if (args[0].equalsIgnoreCase("disable")) {
        if (args[1].equals("all")) {
          Skript.disableScripts();
          try {
            toggleScripts(new File(Skript.getInstance().getDataFolder(), Skript.SCRIPTSFOLDER), false);
            info(sender, "disable.all.disabled");
          } catch (final IOException e) {
            error(sender, "disable.all.io error", ExceptionUtils.toString(e));
          }
        } else {
          final File f = getScriptFromArgs(sender, args, 1);
          if (f == null) // TODO allow disabling deleted/renamed scripts
            return true;
          if (!f.isDirectory()) {
            if (f.getName().startsWith("-")) {
              info(sender, "disable.single.already disabled", f.getName().substring(1));
              return true;
            }
           
            ScriptLoader.unloadScript(f);
           
            try {
              FileUtils.move(f, new File(f.getParentFile(), "-" + f.getName()), false);
            } catch (final IOException e) {
              error(sender, "disable.single.io error", f.getName(), ExceptionUtils.toString(e));
              return true;
            }
            info(sender, "disable.single.disabled", f.getName());
            return true;
          } else {
            final Collection<File> scripts;
            try {
              scripts = toggleScripts(f, false);
            } catch (final IOException e) {
              error(sender, "disable.folder.io error", f.getName(), ExceptionUtils.toString(e));
              return true;
            }
            if (scripts.isEmpty()) {
              info(sender, "disable.folder.empty", f.getName());
              return true;
            }
           
            for (final File script : scripts)
              ScriptLoader.unloadScript(new File(script.getParentFile(), script.getName().substring(1)));
           
            info(sender, "disable.folder.disabled", f.getName(), scripts.size());
            return true;
          }
        }
      } else if (args[0].equalsIgnoreCase("update")) {
        Updater.stateLock.writeLock().lock();
        try {
          final UpdateState state = Updater.state;
          if (args[1].equals("check")) {
            switch (state) {
              case NOT_STARTED:
                Updater.check(sender, false, false);
                break;
              case CHECK_IN_PROGRESS:
                Skript.info(sender, "" + Updater.m_check_in_progress);
                break;
              case CHECK_ERROR:
                Updater.check(sender, false, false);
                break;
              case CHECKED_FOR_UPDATE:
                if (Updater.latest.get() == null)
                  Skript.info(sender, Skript.getVersion().isStable() ? "" + Updater.m_running_latest_version : "" + Updater.m_running_latest_version_beta);
                else
                  Skript.info(sender, "" + Updater.m_update_available);
                break;
              case DOWNLOAD_IN_PROGRESS:
                Skript.info(sender, "" + Updater.m_download_in_progress);
                break;
              case DOWNLOAD_ERROR:
                Skript.info(sender, "" + Updater.m_download_error);
                break;
              case DOWNLOADED:
                Skript.info(sender, "" + Updater.m_downloaded);
                break;
            }
          } else if (args[1].equalsIgnoreCase("changes")) {
            if (state == UpdateState.NOT_STARTED) {
              Skript.info(sender, "" + Updater.m_not_started);
            } else if (state == UpdateState.CHECK_IN_PROGRESS) {
              Skript.info(sender, "" + Updater.m_check_in_progress);
            } else if (state == UpdateState.CHECK_ERROR) {
              Skript.info(sender, "" + Updater.m_check_error);
            } else if (Updater.latest.get() == null) {
              Skript.info(sender, Skript.getVersion().isStable() ? "" + Updater.m_running_latest_version : "" + Updater.m_running_latest_version_beta);
//            } else if (args.length == 2 && Updater.infos.size() != 1) {
//              info(sender, "update.changes.multiple versions.title", Updater.infos.size(), Skript.getVersion());
//              String versions = Updater.infos.get(0).version.toString();
//              for (int i = Updater.infos.size() - 1; i >= 0; i--)
//                versions += ", " + Updater.infos.get(i).version.toString();
//              Skript.message(sender, "  " + versions);
//              message(sender, "update.changes.multiple versions.footer");
            } else {
//              VersionInfo info = null;
              int pageNum = 1;
//              if (Updater.infos.size() == 1) {
//                info = Updater.latest.get();
              if (args.length >= 3 && args[2].matches("\\d+")) {
                final String a2 = args[2];
                assert a2 != null;
                pageNum = Utils.parseInt(a2); // Eclipse complains about null here, not where args[2] is dereferenced above...
              }
//              } else {
//                final String version = args[2];
//                for (final VersionInfo i : Updater.infos) {
//                  if (i.version.toString().equals(version)) {
//                    info = i;
//                    break;
//                  }
//                }
//                if (info == null) {
//                  error(sender, "update.changes.invalid version", version);
//                  return true;
//                }
//                if (args.length >= 4 && args[3].matches("\\d+"))
//                  pageNum = Utils.parseInt(args[3]);
//              }
              final StringBuilder changes = new StringBuilder();
              for (final VersionInfo i : Updater.infos) {
                if (changes.length() != 0)
                  changes.append("\n");
                changes.append(Skript.SKRIPT_PREFIX + Utils.replaceEnglishChatStyles(m_changes_title.toString(i.version, i.date)));
                changes.append("\n");
                changes.append(i.changelog);
              }
              final ChatPage page = ChatPaginator.paginate(changes.toString(), pageNum, ChatPaginator.GUARANTEED_NO_WRAP_CHAT_PAGE_WIDTH, ChatPaginator.OPEN_CHAT_PAGE_HEIGHT - 2);
              sender.sendMessage(page.getLines());
              if (pageNum < page.getTotalPages())
                message(sender, "update.changes.next page", pageNum, page.getTotalPages(), pageNum + 1);
            }
          } else if (args[1].equalsIgnoreCase("download")) {
            switch (state) {
              case NOT_STARTED:
                Updater.check(sender, true, false);
                break;
              case CHECK_IN_PROGRESS:
                Skript.info(sender, "" + Updater.m_check_in_progress);
                break;
              case CHECK_ERROR:
                Updater.check(sender, true, false);
//                info(sender, Language.format("updater.check_error", updater.error));
                break;
              case CHECKED_FOR_UPDATE:
                if (Updater.latest.get() == null) {
                  Skript.info(sender, Skript.getVersion().isStable() ? "" + Updater.m_running_latest_version : "" + Updater.m_running_latest_version_beta);
                } else {
                  Updater.download(sender, false);
                }
                break;
              case DOWNLOAD_IN_PROGRESS:
                Skript.info(sender, "" + Updater.m_download_in_progress);
                break;
              case DOWNLOADED:
                Skript.info(sender, "" + Updater.m_downloaded);
                break;
              case DOWNLOAD_ERROR:
//                Skript.info(sender, "" + Updater.m_download_error);
                Updater.download(sender, false);
                break;
            }
          }
        } finally {
          Updater.stateLock.writeLock().unlock();
        }
      } else if (args[0].equalsIgnoreCase("help")) {
        skriptCommandHelp.showHelp(sender);
      }
    } catch (final Exception e) {
      Skript.exception(e, "Exception occurred in Skript's main command", "Used command: /" + label + " " + StringUtils.join(args, " "));
    } finally {
      r.stop();
    }
    return true;
  }
View Full Code Here

TOP

Related Classes of ch.njol.skript.log.RedirectingLogHandler

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.