diff --git a/.gitignore b/.gitignore index 5ab56dc..d181c98 100644 --- a/.gitignore +++ b/.gitignore @@ -72,4 +72,5 @@ Lunar Core Handbook.txt config.json *.mv *.exe +BuildConfig.java Test.java \ No newline at end of file diff --git a/build.gradle b/build.gradle index 0802700..19d24a8 100644 --- a/build.gradle +++ b/build.gradle @@ -102,6 +102,8 @@ application { } jar { + dependsOn 'injectGitHash' + exclude '*.proto' manifest { @@ -145,6 +147,24 @@ eclipse { } } +tasks.register('injectGitHash') { + def gitCommitHash = { + try { + return 'git rev-parse --verify --short HEAD'.execute().text.trim() + } catch (ignored) { + return 'GIT_NOT_FOUND' + } + } + + new File(project.projectDir.getAbsolutePath() + '/src/main/java/emu/lunarcore/BuildConfig.java').text = """ +package emu.lunarcore; + +public final class BuildConfig { + public static final String GIT_HASH = \"${gitCommitHash()}\"; +} +""" +} + task updateProto { group 'Build' description 'Cleans generated proto folder and regenerates protos' diff --git a/src/main/java/emu/lunarcore/LunarCore.java b/src/main/java/emu/lunarcore/LunarCore.java index 83a5aa3..9e3ad1f 100644 --- a/src/main/java/emu/lunarcore/LunarCore.java +++ b/src/main/java/emu/lunarcore/LunarCore.java @@ -59,6 +59,7 @@ public class LunarCore { public static void main(String[] args) { // Start Server LunarCore.getLogger().info("Starting Lunar Core..."); + LunarCore.getLogger().info("Git hash: " + getGitHash()); LunarCore.getLogger().info("Game version: " + GameConstants.VERSION); boolean generateHandbook = true; @@ -168,6 +169,19 @@ public class LunarCore { getLogger().error("Config save error"); } } + + // Git hash + + private static String getGitHash() { + // Safely get the build config without errors even if it hasnt been generated yet + try { + Class buildConfig = Class.forName("emu.lunarcore.BuildConfig"); + return buildConfig.getField("GIT_HASH").get(null).toString(); + } catch (Exception e) { + // Ignored + } + return "Unknown"; + } // Server console