aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/moe/nea/libautoupdate/CurrentVersion.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/moe/nea/libautoupdate/CurrentVersion.java')
-rw-r--r--src/main/java/moe/nea/libautoupdate/CurrentVersion.java66
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);
}