Added a built-in update checker. See http://wiki.bukkit.org/Bukkit.yml#auto-updater for new bukkit.yml options.
This commit is contained in:
107
src/main/java/org/bukkit/craftbukkit/updater/AutoUpdater.java
Normal file
107
src/main/java/org/bukkit/craftbukkit/updater/AutoUpdater.java
Normal file
@@ -0,0 +1,107 @@
|
||||
package org.bukkit.craftbukkit.updater;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
public class AutoUpdater {
|
||||
public static final String WARN_CONSOLE = "warn-console";
|
||||
public static final String WARN_OPERATORS = "warn-ops";
|
||||
|
||||
private final BukkitDLUpdaterService service;
|
||||
private final List<String> onUpdate = new ArrayList<String>();
|
||||
private final List<String> onBroken = new ArrayList<String>();
|
||||
private final Logger log;
|
||||
private final String channel;
|
||||
private boolean enabled;
|
||||
private ArtifactDetails current = null;
|
||||
private ArtifactDetails latest = null;
|
||||
|
||||
public AutoUpdater(BukkitDLUpdaterService service, Logger log, String channel) {
|
||||
this.service = service;
|
||||
this.log = log;
|
||||
this.channel = channel;
|
||||
}
|
||||
|
||||
public String getChannel() {
|
||||
return channel;
|
||||
}
|
||||
|
||||
public boolean isEnabled() {
|
||||
return enabled;
|
||||
}
|
||||
|
||||
public void setEnabled(boolean isEnabled) {
|
||||
this.enabled = isEnabled;
|
||||
}
|
||||
|
||||
public List<String> getOnBroken() {
|
||||
return onBroken;
|
||||
}
|
||||
|
||||
public List<String> getOnUpdate() {
|
||||
return onUpdate;
|
||||
}
|
||||
|
||||
public boolean isUpdateAvailable() {
|
||||
if ((latest == null) || (current == null) || (!isEnabled())) {
|
||||
return false;
|
||||
} else {
|
||||
return latest.getCreated().after(current.getCreated());
|
||||
}
|
||||
}
|
||||
|
||||
public ArtifactDetails getCurrent() {
|
||||
return current;
|
||||
}
|
||||
|
||||
public ArtifactDetails getLatest() {
|
||||
return latest;
|
||||
}
|
||||
|
||||
public void check(final String currentSlug) {
|
||||
if (!isEnabled()) return;
|
||||
|
||||
new Thread() {
|
||||
@Override
|
||||
public void run() {
|
||||
current = service.getArtifact(currentSlug);
|
||||
latest = service.getArtifact("latest-" + channel);
|
||||
|
||||
if (isUpdateAvailable()) {
|
||||
if ((current.isBroken()) && (onBroken.contains(WARN_CONSOLE))) {
|
||||
log.severe("----- Bukkit Auto Updater -----");
|
||||
log.severe("Your version of CraftBukkit is known to be broken. It is strongly advised that you update to a more recent version ASAP.");
|
||||
log.severe("Known issues with your version:");
|
||||
|
||||
for (String line : current.getBrokenReason().split("\n")) {
|
||||
log.severe("> " + line);
|
||||
}
|
||||
|
||||
log.severe("Newer version " + latest.getVersion() + " (build #" + latest.getBuildNumber() + ") was released on " + latest.getCreated() + ".");
|
||||
log.severe("Details: " + latest.getHtmlUrl());
|
||||
log.severe("Download: " + latest.getFile().getUrl());
|
||||
log.severe("----- ------------------- -----");
|
||||
} else if (onUpdate.contains(WARN_CONSOLE)) {
|
||||
log.warning("----- Bukkit Auto Updater -----");
|
||||
log.warning("Your version of CraftBukkit is out of date. Version " + latest.getVersion() + " (build #" + latest.getBuildNumber() + ") was released on " + latest.getCreated() + ".");
|
||||
log.warning("Details: " + latest.getHtmlUrl());
|
||||
log.warning("Download: " + latest.getFile().getUrl());
|
||||
log.warning("----- ------------------- -----");
|
||||
}
|
||||
} else if ((current != null) && (current.isBroken()) && (onBroken.contains(WARN_CONSOLE))) {
|
||||
log.severe("----- Bukkit Auto Updater -----");
|
||||
log.severe("Your version of CraftBukkit is known to be broken. It is strongly advised that you update to a more recent version ASAP.");
|
||||
log.severe("Known issues with your version:");
|
||||
|
||||
for (String line : current.getBrokenReason().split("\n")) {
|
||||
log.severe("> " + line);
|
||||
}
|
||||
|
||||
log.severe("Unfortunately, there is not yet a newer version suitable for your server. We would advise you wait an hour or two, or try out a dev build.");
|
||||
log.severe("----- ------------------- -----");
|
||||
}
|
||||
}
|
||||
}.start();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user