diff --git a/src/Launcher/Main.java b/src/Launcher/Main.java index e8558f8..0a53f61 100644 --- a/src/Launcher/Main.java +++ b/src/Launcher/Main.java @@ -30,7 +30,12 @@ import com.tofvesson.async.*; public class Main extends Application { - public static final URL mainLauncher = Main.class.getResource("/assets/layout/main.fxml"); // Launcher body + // Semantic versioning system data + public static final String semVerDevState = "PreDev"; // Development stage + public static final int semVerMajor = 0; // Major version + public static final int semVerMinor = 0; // Minor version + public static final int semVerPatch = 0; // Patch version + private double xOffset = 0, yOffset = 0; // Offsets for dragging private Button exit, min, Home_btn, Modpack_btn, Settings_btn, Instance_btn; // Define buttons @@ -47,7 +52,9 @@ public class Main extends Application { primaryStage.initStyle(StageStyle.UNDECORATED); // Remove ugly trash - root = FXMLLoader.load(mainLauncher); + root = (Pane) Tabs.load("main"); // Load via layout loader + ((Label)root.lookup("#version")).setText(((Label) root.lookup("#version")) // Dynamically set version label + .getText().replace("$v", semVerDevState+"-"+semVerMajor+"."+semVerMinor+"."+semVerPatch)); // Use variables to define version primaryStage.setTitle("Team-Avion Launcher [WIP]"); primaryStage.setScene(new Scene(root, 900, 500)); primaryStage.show(); @@ -150,7 +157,6 @@ public class Main extends Application { public static void main(String[] args) { Updater u = Updater.getInstance(); - launch(args); } diff --git a/src/Launcher/net/Updater.java b/src/Launcher/net/Updater.java index 9e9d75b..1b38d8b 100644 --- a/src/Launcher/net/Updater.java +++ b/src/Launcher/net/Updater.java @@ -3,10 +3,17 @@ package Launcher.net; import com.tofvesson.async.Async; import com.tofvesson.reflection.SafeReflection; -import java.io.IOException; +import javax.net.ssl.HttpsURLConnection; +import java.io.*; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import static Launcher.Main.semVerMajor; +import static Launcher.Main.semVerMinor; +import static Launcher.Main.semVerPatch; /** * Simple thing for updating launcher @@ -15,21 +22,72 @@ public class Updater { private static volatile Updater instance; private static final Async setup = new Async<>(SafeReflection.getFirstConstructor(Updater.class)); - private URLConnection conn; + public static final Pattern version = Pattern.compile("(?s).*(\\d).(\\d).(\\d).*"); // Pattern to match when finding refs + private HttpsURLConnection conn; public static final URL updateURL; private boolean isUpdateAvailable = false; static { URL u = null; - try { u = new URL("https://github.com/GabrielTofvesson/TeamAvionLauncher/releases/"); } catch (MalformedURLException e) { e.printStackTrace(); } + try { u = new URL("https://github.com/GabrielTofvesson/TeamAvionLauncher/releases"); } catch (MalformedURLException e) { e.printStackTrace(); } updateURL = u; } private Updater(){ try { - conn = updateURL.openConnection(); + conn = (HttpsURLConnection) updateURL.openConnection(); + conn.setDoOutput(true); + conn.setDoInput(true); + conn.setRequestMethod("GET"); + conn.setRequestProperty("User-Agent", "Mozilla/5.0"); + if(conn.getResponseCode()!=200) return; // Can't get update site + conn.connect(); + + BufferedReader in = new BufferedReader(new InputStreamReader( + conn.getInputStream())); + String inputLine; + StringBuffer response = new StringBuffer(); + + while ((inputLine = in.readLine()) != null) { + response.append(inputLine); + } + in.close(); + + Matcher m = version.matcher(response.toString()); + int semMajor = 0, semMinor = 0, semPatch = 0; + String downloadLink = ""; + while(m.find()){ + int semMaj = Integer.parseInt(m.group(1)), + semMin = Integer.parseInt(m.group(2)), + semPat = Integer.parseInt(m.group(3)); + if(semMaj < semVerMajor || (semMaj==semVerMajor && semMin -