feat: 自动检测 Jenkins 更新
This commit is contained in:
@@ -2,11 +2,21 @@ package cn.hamster3.mc.plugin.core.bungee;
|
||||
|
||||
import cn.hamster3.mc.plugin.core.bungee.api.CoreBungeeAPI;
|
||||
import cn.hamster3.mc.plugin.core.common.api.CoreAPI;
|
||||
import cn.hamster3.mc.plugin.core.common.config.YamlConfig;
|
||||
import cn.hamster3.mc.plugin.core.common.util.JenkinsUtils;
|
||||
import lombok.Getter;
|
||||
import net.kyori.adventure.platform.bungeecord.BungeeAudiences;
|
||||
import net.md_5.bungee.api.CommandSender;
|
||||
import net.md_5.bungee.api.ProxyServer;
|
||||
import net.md_5.bungee.api.chat.TextComponent;
|
||||
import net.md_5.bungee.api.plugin.Plugin;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.StandardCopyOption;
|
||||
import java.util.logging.Logger;
|
||||
@@ -56,6 +66,7 @@ public class HamsterCorePlugin extends Plugin {
|
||||
logger.info("已创建 AudienceProvider");
|
||||
long time = System.currentTimeMillis() - start;
|
||||
logger.info("仓鼠核心启动完成,总计耗时 " + time + " ms");
|
||||
showUpdate(ProxyServer.getInstance().getConsole());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -73,4 +84,40 @@ public class HamsterCorePlugin extends Plugin {
|
||||
long time = System.currentTimeMillis() - start;
|
||||
logger.info("仓鼠核心已关闭,总计耗时 " + time + " ms");
|
||||
}
|
||||
|
||||
private void showUpdate(@NotNull CommandSender sender) {
|
||||
ProxyServer.getInstance().getScheduler().runAsync(HamsterCorePlugin.getInstance(), () -> {
|
||||
for (Plugin plugin : ProxyServer.getInstance().getPluginManager().getPlugins()) {
|
||||
InputStream resource = plugin.getResourceAsStream("jenkins.yml");
|
||||
if (resource == null) {
|
||||
continue;
|
||||
}
|
||||
try (InputStreamReader reader = new InputStreamReader(resource, StandardCharsets.UTF_8)) {
|
||||
YamlConfig jenkinsConfig = YamlConfig.load(reader);
|
||||
String jobUrl = jenkinsConfig.getString("JOB_URL");
|
||||
if (jobUrl == null || jobUrl.equalsIgnoreCase("NONE")) {
|
||||
continue;
|
||||
}
|
||||
String buildNumberString = jenkinsConfig.getString("BUILD_NUMBER");
|
||||
if (buildNumberString == null || buildNumberString.equalsIgnoreCase("NONE")) {
|
||||
continue;
|
||||
}
|
||||
int lastStableBuild = JenkinsUtils.getLastStableBuild(jobUrl, null, null);
|
||||
int buildNumber = Integer.parseInt(buildNumberString);
|
||||
int version = lastStableBuild - buildNumber;
|
||||
if (version <= 0) {
|
||||
continue;
|
||||
}
|
||||
String pluginName = plugin.getDescription().getName();
|
||||
sender.sendMessage(TextComponent.fromLegacyText(
|
||||
String.format("§a检测到服务器内安装的 %s 插件有 %d 个版本更新", pluginName, version)
|
||||
));
|
||||
sender.sendMessage(TextComponent.fromLegacyText(
|
||||
String.format("§b下载链接: &b&n&l%s", jobUrl)
|
||||
));
|
||||
} catch (IOException ignored) {
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user