From 88802ece0407cbf83ab5dbe50fe694ebfe98f2f3 Mon Sep 17 00:00:00 2001 From: Bryson Steck Date: Sat, 27 May 2023 00:22:51 -0600 Subject: create versioning system --- build.gradle | 28 ++++++++++++++++++++-- .../ServerCraft/controllers/InfoController.kt | 14 ++++++++++- .../xyz/brysonsteck/ServerCraft/server/Download.kt | 2 -- .../xyz/brysonsteck/ServerCraft/info.fxml | 2 +- 4 files changed, 40 insertions(+), 6 deletions(-) diff --git a/build.gradle b/build.gradle index adb9fba..c660a31 100644 --- a/build.gradle +++ b/build.gradle @@ -32,8 +32,6 @@ plugins { apply plugin: 'io.github.fvarrui.javapackager.plugin' -version = "1.0" - repositories { // Use Maven Central for resolving dependencies. mavenCentral() @@ -112,6 +110,28 @@ task pack(type: io.github.fvarrui.javapackager.gradle.PackageTask, dependsOn: bu } } +task createProperties(dependsOn: processResources) { + doLast { + def stdout = new ByteArrayOutputStream() + + if (project.hasProperty("release")) { + project.version = 1.0 + } else { + exec { + commandLine "git", "log", "-n", "1", "--pretty=format:\"%h\"" + standardOutput = stdout + } + project.version = "git(" + stdout.toString().trim().replaceAll("\"", "") + ")" + } + + new File("$buildDir/resources/main/xyz/brysonsteck/ServerCraft/info.properties").withWriter { w -> + Properties p = new Properties() + p['version'] = project.version.toString() + p.store w, null + } + } +} + build.doLast { if (OperatingSystem.current().isLinux()) { exec { @@ -125,6 +145,10 @@ build.doLast { } } +classes { + dependsOn createProperties +} + javafx { version = "20" modules = ['javafx.controls', 'javafx.fxml', 'javafx.graphics'] diff --git a/src/main/kotlin/xyz/brysonsteck/ServerCraft/controllers/InfoController.kt b/src/main/kotlin/xyz/brysonsteck/ServerCraft/controllers/InfoController.kt index dcf77ba..92c6674 100644 --- a/src/main/kotlin/xyz/brysonsteck/ServerCraft/controllers/InfoController.kt +++ b/src/main/kotlin/xyz/brysonsteck/ServerCraft/controllers/InfoController.kt @@ -4,12 +4,18 @@ import javafx.fxml.FXML import javafx.application.Platform import javafx.scene.Node import javafx.scene.control.Hyperlink +import javafx.scene.control.Label import javafx.stage.Stage import javafx.event.ActionEvent import java.awt.Desktop import java.net.URI +import java.util.Properties +import xyz.brysonsteck.ServerCraft.App class InfoController { + @FXML + lateinit private var version: Label + private val emails = mapOf( "bryson" to "me@brysonsteck.xyz" ) @@ -19,6 +25,13 @@ class InfoController { private val source = "https://codeberg.org/brysonsteck/ServerCraft" private val license = "https://www.gnu.org/licenses/gpl-3.0.html" + @FXML + public fun initialize() { + val props = Properties() + props.load(App().javaClass.getResourceAsStream("info.properties")) + version.text += props.getProperty("version") + } + @FXML private fun openHyperlink(e: ActionEvent) { val link = e.source as Hyperlink @@ -52,7 +65,6 @@ class InfoController { } } split[0].equals("license") -> { - println("license") if (!os.contains("linux")) { desktop.browse(URI(license)) } else { diff --git a/src/main/kotlin/xyz/brysonsteck/ServerCraft/server/Download.kt b/src/main/kotlin/xyz/brysonsteck/ServerCraft/server/Download.kt index f538458..14606f6 100644 --- a/src/main/kotlin/xyz/brysonsteck/ServerCraft/server/Download.kt +++ b/src/main/kotlin/xyz/brysonsteck/ServerCraft/server/Download.kt @@ -54,14 +54,12 @@ class Download: Runnable { // Make sure response code is in the 200 range. if (connection.responseCode / 100 != 2) { - println(connection.responseCode) status = Status.ERROR } // Check for valid content length. contentLength = connection.getContentLength(); if (contentLength < 1) { - println(connection.getContentLength()) status = Status.ERROR } diff --git a/src/main/resources/xyz/brysonsteck/ServerCraft/info.fxml b/src/main/resources/xyz/brysonsteck/ServerCraft/info.fxml index a4d561a..d003ba8 100644 --- a/src/main/resources/xyz/brysonsteck/ServerCraft/info.fxml +++ b/src/main/resources/xyz/brysonsteck/ServerCraft/info.fxml @@ -27,7 +27,7 @@ -