diff options
Diffstat (limited to 'src/main/java/moe/nea/libautoupdate/CurrentVersion.java')
-rw-r--r-- | src/main/java/moe/nea/libautoupdate/CurrentVersion.java | 66 |
1 files changed, 59 insertions, 7 deletions
diff --git a/src/main/java/moe/nea/libautoupdate/CurrentVersion.java b/src/main/java/moe/nea/libautoupdate/CurrentVersion.java index 8c0837e..e6e4ff8 100644 --- a/src/main/java/moe/nea/libautoupdate/CurrentVersion.java +++ b/src/main/java/moe/nea/libautoupdate/CurrentVersion.java @@ -1,21 +1,73 @@ package moe.nea.libautoupdate; +import com.google.gson.JsonElement; +import com.google.gson.JsonPrimitive; + /** * Provider interface for getting the current version of this jar. */ public interface CurrentVersion { + /** - * @return the version number + * Create a {@link CurrentVersion} that compares only numbers. (Other version types will be assumed to be newer.) + * + * @param number the current version number */ - int getCurrentVersionNumber(); + static CurrentVersion of(int number) { + return new CurrentVersion() { + @Override + public String display() { + return String.valueOf(number); + } + + @Override + public boolean isOlderThan(JsonElement element) { + if (!element.isJsonPrimitive()) return true; + JsonPrimitive prim = element.getAsJsonPrimitive(); + if (!prim.isNumber()) return true; + return prim.getAsInt() > number; + } + + @Override + public String toString() { + return "VersionNumber (" + number + ")"; + } + }; + } /** - * Create a constant {@link CurrentVersion} + * Create a {@link CurrentVersion} that uses git tag names. Any difference in tag name will be treated as newer. * - * @param number the constant version number - * @return + * @param tagName the current tag name */ - static CurrentVersion of(int number) { - return () -> number; + static CurrentVersion ofTag(String tagName) { + return new CurrentVersion() { + @Override + public String display() { + return tagName; + } + + @Override + public boolean isOlderThan(JsonElement element) { + return !new JsonPrimitive(tagName).equals(element); + } + + @Override + public String toString() { + return "VersionTag (" + tagName + ")"; + } + }; } + + /** + * @return a user-friendly representation of this version + */ + String display(); + + /** + * Compare to another version, represented as JSON. + * + * @return true, if this version is older than the other version and an update to that version should occur. + */ + boolean isOlderThan(JsonElement element); } |