From c227e2d43ad9ae3167b9e9977e0cc54ba62ed7e7 Mon Sep 17 00:00:00 2001 From: Gareth Coles Date: Tue, 3 Sep 2024 10:26:39 +0100 Subject: [PATCH] [Fixes #328] Add Git hash/branch to props and logging --- buildSrc/src/main/kotlin/GitTools.kt | 15 ++++++++++- .../src/main/kotlin/kordex-module.gradle.kts | 7 ++++-- .../kotlin/dev/kordex/core/_Properties.kt | 25 +++++++++++++++++++ .../core/builders/ExtensibleBotBuilder.kt | 7 +++++- 4 files changed, 50 insertions(+), 4 deletions(-) diff --git a/buildSrc/src/main/kotlin/GitTools.kt b/buildSrc/src/main/kotlin/GitTools.kt index 4e1460b392..6665f53ea5 100644 --- a/buildSrc/src/main/kotlin/GitTools.kt +++ b/buildSrc/src/main/kotlin/GitTools.kt @@ -41,10 +41,23 @@ fun Project.getCurrentGitBranch(): String { // https://gist.github.com/lordcode var gitBranch = "Unknown branch" try { - gitBranch = runCommand("git rev-parse --abbrev-ref HEAD") + gitBranch = runCommand("git rev-parse --abbrev-ref HEAD").trim() } catch (t: Throwable) { println(t) } return gitBranch } + + +fun Project.getCurrentGitHash(): String { // https://gist.github.com/lordcodes/15b2a4aecbeff7c3238a70bfd20f0931 + var gitHash = "unknown" + + try { + gitHash = runCommand("git rev-parse --short HEAD").trim() + } catch (t: Throwable) { + println(t) + } + + return gitHash +} diff --git a/buildSrc/src/main/kotlin/kordex-module.gradle.kts b/buildSrc/src/main/kotlin/kordex-module.gradle.kts index ce2a5d991e..7a9a18e704 100644 --- a/buildSrc/src/main/kotlin/kordex-module.gradle.kts +++ b/buildSrc/src/main/kotlin/kordex-module.gradle.kts @@ -68,11 +68,14 @@ tasks { description = "Generate KordEx properties file" comment = "Generated during KordEx compilation" - destinationFile = layout.buildDirectory.file("kordex.properties") + destinationFile = layout.buildDirectory.file("kordex-build.properties") encoding = "UTF-8" - property("versions.kordEx", project.version) + property("git.branch", getCurrentGitBranch()) + property("git.hash", getCurrentGitHash()) + property("versions.kord", libs.findVersion("kord").get()) + property("versions.kordEx", project.version) } build { diff --git a/kord-extensions/src/main/kotlin/dev/kordex/core/_Properties.kt b/kord-extensions/src/main/kotlin/dev/kordex/core/_Properties.kt index 10475d92fd..7d037f7516 100644 --- a/kord-extensions/src/main/kotlin/dev/kordex/core/_Properties.kt +++ b/kord-extensions/src/main/kotlin/dev/kordex/core/_Properties.kt @@ -27,6 +27,19 @@ public val kordexProps: Properties by lazy { props } +/** Convenient access to the properties stored within `kordex-build.properties` in your bot's resources. **/ +public val kordexBuildProps: Properties by lazy { + val props = Properties() + + props.load( + ExtensibleBotBuilder::class.java.getResourceAsStream( + "/kordex-build.properties" + ) + ) + + props +} + /** * Location of the data collection state file. * @@ -88,10 +101,22 @@ public val KORDEX_MODULES: List by lazy { /** Current Kord Extensions version. **/ public val KORDEX_VERSION: String? by lazy { kordexProps["versions.kordEx"] as? String + ?: kordexBuildProps["versions.kordEx"] as? String } /** Current Kord version. **/ public val KORD_VERSION: String? by lazy { kordexProps["versions.kord"] as? String ?: kordexProps["kordVersion"] as? String + ?: kordexBuildProps["versions.kord"] as? String +} + +/** Git branch used to build this KordEx release. **/ +public val KORDEX_GIT_BRANCH: String? by lazy { + kordexBuildProps["git.branch"] as? String +} + +/** Hash corresponding with the Git commit used to build this KordEx release. **/ +public val KORDEX_GIT_HASH: String? by lazy { + kordexBuildProps["git.hash"] as? String } diff --git a/kord-extensions/src/main/kotlin/dev/kordex/core/builders/ExtensibleBotBuilder.kt b/kord-extensions/src/main/kotlin/dev/kordex/core/builders/ExtensibleBotBuilder.kt index 73b7908211..0810b64e3a 100644 --- a/kord-extensions/src/main/kotlin/dev/kordex/core/builders/ExtensibleBotBuilder.kt +++ b/kord-extensions/src/main/kotlin/dev/kordex/core/builders/ExtensibleBotBuilder.kt @@ -29,6 +29,8 @@ import dev.kord.rest.builder.message.create.MessageCreateBuilder import dev.kordex.core.DATA_COLLECTION import dev.kordex.core.DEV_MODE import dev.kordex.core.ExtensibleBot +import dev.kordex.core.KORDEX_GIT_BRANCH +import dev.kordex.core.KORDEX_GIT_HASH import dev.kordex.core.KORDEX_VERSION import dev.kordex.core.KORD_VERSION import dev.kordex.core.annotations.BotBuilderDSL @@ -522,7 +524,10 @@ public open class ExtensibleBotBuilder { /** @suppress Internal function used to build a bot instance. **/ public open suspend fun build(token: String): ExtensibleBot { - logger.info { "Starting bot with Kord Extensions v$KORDEX_VERSION and Kord v$KORD_VERSION" } + logger.info { + "Starting bot with Kord Extensions v$KORDEX_VERSION ($KORDEX_GIT_BRANCH@$KORDEX_GIT_HASH) " + + "and Kord v$KORD_VERSION" + } hooksBuilder.beforeKoinSetup { // We have to do this super-duper early for safety loadModule { single { dataAdapterCallback() } bind DataAdapter::class }