diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 86375cf..a7bbcfc 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -8,9 +8,9 @@ name: Gradle Package on: - release: - types: - - created + push: + tags: + - v* jobs: build: @@ -41,4 +41,4 @@ jobs: arguments: publish env: USERNAME: ${{ github.actor }} - TOKEN: ${{ secrets.GITHUB_TOKEN }} + TOKEN: ${{ secrets.REPO_TOKEN }} diff --git a/build.gradle.kts b/build.gradle.kts index 2bff5b7..3e1383e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,9 +8,35 @@ plugins { `maven-publish` } -val artifact = System.getenv("artifact") ?: "sdk" -group = System.getenv("group") ?: "net.tcgdex" -version = System.getenv("version") ?: "2.0.0" +// from: https://discuss.kotlinlang.org/t/use-git-hash-as-version-number-in-build-gradle-kts/19818/8 +fun String.runCommand( + workingDir: File = File("."), + timeoutAmount: Long = 60, + timeoutUnit: TimeUnit = TimeUnit.SECONDS +): String = ProcessBuilder(split("\\s(?=(?:[^'\"`]*(['\"`])[^'\"`]*\\1)*[^'\"`]*$)".toRegex())) + .directory(workingDir) + .redirectOutput(ProcessBuilder.Redirect.PIPE) + .redirectError(ProcessBuilder.Redirect.PIPE) + .start() + .apply { waitFor(timeoutAmount, timeoutUnit) } + .run { + val error = errorStream.bufferedReader().readText().trim() + if (error.isNotEmpty()) { + return@run "" + } + inputStream.bufferedReader().readText().trim() + } + +val branch = "git rev-parse --abbrev-ref HEAD".runCommand(workingDir = rootDir) +val tag = "git tag -l --points-at HEAD".runCommand(workingDir = rootDir) +val commitId = "git rev-parse HEAD".runCommand(workingDir = rootDir) + +val finalVersion = System.getenv("version") as String? ?: tag.drop(1) ?: "2.0.0" +val finalGroup = System.getenv("group") as String? ?: "net.tcgdex" +val artifact = System.getenv("artifact") as String? ?: "sdk" + +group = finalGroup +version = finalVersion repositories { mavenCentral() @@ -56,39 +82,9 @@ val javadocJar = tasks.named("javadocJar") { publishing { publications { create("maven") { - // groupId = group + groupId = finalGroup artifactId = artifact - // version = ver - - from(components["java"]) - - pom { - name.set("TCGdex SDK") - description.set("Communicate with the Open Source TCGdex API in Kotlin/Java using the SDK") - url.set("https://github.com/tcgdex/java-sdk") - licenses { - license { - name.set("MIT License") - url.set("https://github.com/tcgdex/java-sdk/blob/master/LICENSE.txt") - } - } - developers { - developer { - id.set("avior") - name.set("Avior") - email.set("contact@tcgdex.net") - } - } - scm { - connection.set("scm:git@github.com:tcgdex/java-sdk.git") - url.set("https://github.com/tcgdex/java-sdk") - } - } - } - register("gpr") { - // groupId = group - artifactId = artifact - // version = ver + version = finalVersion from(components["java"])