From def38eed066ca8dbacafecbe8ea479b5e80e4c54 Mon Sep 17 00:00:00 2001 From: Telesphoreo Date: Sat, 26 Mar 2022 17:22:08 -0500 Subject: [PATCH] fix it all --- build.gradle | 43 +++++++++++++++++-- src/main/java/dev/plex/Plex.java | 9 ++++ .../java/dev/plex/command/impl/PlexCMD.java | 6 +-- 3 files changed, 50 insertions(+), 8 deletions(-) diff --git a/build.gradle b/build.gradle index c9de329..56fef9b 100644 --- a/build.gradle +++ b/build.gradle @@ -41,10 +41,6 @@ group = "dev.plex" version = "0.10-SNAPSHOT" description = "Plex" -ext { - buildNumber = System.getenv("BUILD_NUMBER") ?: "unknown" -} - shadowJar { archiveClassifier.set("") relocate "org.bstats", "dev.plex" @@ -60,9 +56,48 @@ bukkit { apiVersion = "1.18" } +String getGitHash() { + def stdout = new ByteArrayOutputStream() + try { + exec { + commandLine "git", "rev-parse", "--short", "HEAD" + standardOutput = stdout + ignoreExitValue = true + } + } catch (GradleException e) { + logger.error("Couldn't determine Git head because Git is not installed. " + e.getMessage()) + } + return stdout.size() > 0 ? stdout.toString().trim() : "unknown" +} + +String getBuildNumber() { + def stdout = new ByteArrayOutputStream() + try { + exec { + commandLine "git", "rev-list", "HEAD", "--count" + standardOutput = stdout + ignoreExitValue = true + } + } catch (GradleException e) { + logger.error("Couldn't determine build number because Git is not installed. " + e.getMessage()) + } + return stdout.size() ? stdout.toString().trim() + " (local)" : "unknown" +} + +static def getDate() { + return new Date().format("MM/dd/yyyy 'at' hh:mm:ss a") +} + +ext { + buildNumber = System.getenv("BUILD_NUMBER") + " (Jenkins)" ?: getBuildNumber() +} + task buildProperties { ant.propertyfile(file: "$project.rootDir/src/main/resources/build.properties") { + entry(key: "buildAuthor", default: "unknown") entry(key: "buildNumber", value: buildNumber) + entry(key: "buildDate", value: getDate()) + entry(key: "buildHead", value: getGitHash()) } } diff --git a/src/main/java/dev/plex/Plex.java b/src/main/java/dev/plex/Plex.java index 91b76f5..ec627c0 100644 --- a/src/main/java/dev/plex/Plex.java +++ b/src/main/java/dev/plex/Plex.java @@ -65,6 +65,8 @@ public class Plex extends JavaPlugin private String system; + public static final BuildProperties build = new BuildProperties(); + public static Plex get() { return plugin; @@ -77,6 +79,7 @@ public class Plex extends JavaPlugin config = new Config(this, "config.yml"); messages = new Config(this, "messages.yml"); indefBans = new Config(this, "indefbans.yml"); + build.load(this); modulesFolder = new File(this.getDataFolder() + File.separator + "modules"); if (!modulesFolder.exists()) @@ -225,6 +228,9 @@ public class Plex extends JavaPlugin public static class BuildProperties { public String number; + public String author; + public String date; + public String head; public void load(Plex plugin) { @@ -239,6 +245,9 @@ public class Plex extends JavaPlugin } number = props.getProperty("buildNumber", "unknown"); + author = props.getProperty("buildAuthor", "unknown"); + date = props.getProperty("buildDate", "unknown"); + head = props.getProperty("buildHead", "unknown"); } catch (Exception ex) { diff --git a/src/main/java/dev/plex/command/impl/PlexCMD.java b/src/main/java/dev/plex/command/impl/PlexCMD.java index c300f84..8ef69a9 100644 --- a/src/main/java/dev/plex/command/impl/PlexCMD.java +++ b/src/main/java/dev/plex/command/impl/PlexCMD.java @@ -25,17 +25,15 @@ import org.jetbrains.annotations.Nullable; public class PlexCMD extends PlexCommand { // Don't modify this command - Plex.BuildProperties build = new Plex.BuildProperties(); - @Override protected Component execute(@NotNull CommandSender sender, @Nullable Player playerSender, String[] args) { if (args.length == 0) { send(sender, mmString("Plex - A new freedom plugin.")); - send(sender, mmString("Plugin version: " + plugin.getDescription().getVersion())); + send(sender, mmString("Plugin version: " + plugin.getDescription().getVersion() + " #" + Plex.build.number + " Git: " + Plex.build.head)); send(sender, mmString("Authors: Telesphoreo, Taahh")); - send(sender, mmString("Build: " + build.number)); + send(sender, mmString("Built by: " + Plex.build.author + " on " + Plex.build.date)); send(sender, mmString("Run /plex modules to see a list of modules.")); return null; }