Skip to content

Commit 7572c70

Browse files
committed
chore: auto generated version file
1 parent 0be20b8 commit 7572c70

7 files changed

Lines changed: 75 additions & 19 deletions

File tree

.github/workflows/publish.yml

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
name: Publish package
22

33
on:
4-
release:
5-
types: [published]
6-
workflow_dispatch:
4+
push:
5+
tags: [ 'v*.*.*' ]
76

87
env:
98
MAVEN_CENTRAL_USERNAME: ${{ secrets.OSSRH_USERNAME }}
@@ -16,7 +15,6 @@ jobs:
1615
runs-on: ubuntu-latest
1716
permissions:
1817
contents: read
19-
packages: write
2018
steps:
2119
- name: Checkout Application Repository
2220
uses: actions/checkout@v4
@@ -33,7 +31,7 @@ jobs:
3331
uses: gradle/actions/setup-gradle@v4
3432

3533
- name: Publish to Maven Central
36-
run: ./gradlew publishAndReleaseToMavenCentral --no-daemon --stacktrace --no-configuration-cache
34+
run: ./gradlew publishAndReleaseToMavenCentral -Pversion=${{ github.ref_name }} --no-daemon --stacktrace --no-configuration-cache
3735
env:
3836
USERNAME: ${{ github.actor }}
3937
TOKEN: ${{ secrets.GITHUB_TOKEN }}

build-logic/conventions/src/main/kotlin/InventoryFrameworkExtension.kt renamed to build-logic/conventions/src/main/kotlin/Extension.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@ import javax.inject.Inject
66
abstract class InventoryFrameworkExtension @Inject constructor(objects: ObjectFactory) {
77

88
val publish: Property<Boolean> = objects.property<Boolean>().convention(false)
9+
10+
val generateVersionFile: Property<Boolean> = objects.property<Boolean>().convention(false)
911
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import org.gradle.api.DefaultTask
2+
import org.gradle.api.Project
3+
import org.gradle.api.file.DirectoryProperty
4+
import org.gradle.api.provider.Property
5+
import org.gradle.api.tasks.Input
6+
import org.gradle.api.tasks.OutputDirectory
7+
import org.gradle.api.tasks.SourceSetContainer
8+
import org.gradle.api.tasks.TaskAction
9+
import org.gradle.kotlin.dsl.register
10+
import java.io.File
11+
12+
internal abstract class GenerateVersionFileTask : DefaultTask() {
13+
14+
init {
15+
group = "inventoryFramework"
16+
}
17+
18+
@get:Input
19+
abstract val version: Property<String>
20+
21+
@get:OutputDirectory
22+
abstract val outputDir: DirectoryProperty
23+
24+
@TaskAction
25+
fun generate() {
26+
val packageDir = outputDir.get().dir("me/devnatan/inventoryframework/runtime").asFile
27+
packageDir.mkdirs()
28+
29+
val file = File(packageDir, "InventoryFramework.java")
30+
file.writeText(
31+
"""
32+
package me.devnatan.inventoryframework.runtime;
33+
34+
import org.bukkit.plugin.java.JavaPlugin;
35+
36+
public final class InventoryFramework extends JavaPlugin {
37+
38+
public static final String LIBRARY_VERSION = "${version.get()}";
39+
}
40+
41+
""".trimIndent()
42+
)
43+
}
44+
}
45+
46+
internal fun Project.registerGenerateVersionFileTask() {
47+
val generateVersionFileTask = tasks.register<GenerateVersionFileTask>("generateVersionFile") {
48+
version.set(project.version.toString())
49+
outputDir.set(layout.buildDirectory.dir("generated/sources/ifversion"))
50+
}
51+
52+
extensions.configure<SourceSetContainer>("sourceSets") {
53+
named("main") {
54+
java.srcDir(generateVersionFileTask.flatMap { it.outputDir })
55+
}
56+
}
57+
58+
tasks.named("compileJava") {
59+
dependsOn(generateVersionFileTask)
60+
}
61+
}

build-logic/conventions/src/main/kotlin/LibraryConventionPlugin.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import org.gradle.kotlin.dsl.create
1111
import org.gradle.kotlin.dsl.getByType
1212
import org.gradle.kotlin.dsl.withType
1313

14-
class LibraryConventionPlugin : Plugin<Project> {
14+
internal class LibraryConventionPlugin : Plugin<Project> {
1515

1616
override fun apply(target: Project) = with(target) {
1717
group = rootProject.group
@@ -23,8 +23,10 @@ class LibraryConventionPlugin : Plugin<Project> {
2323

2424
val extension = project.extensions.create<InventoryFrameworkExtension>("inventoryFramework")
2525
project.afterEvaluate {
26+
if (extension.generateVersionFile.get())
27+
registerGenerateVersionFileTask()
28+
2629
if (extension.publish.get()) {
27-
plugins.apply("com.vanniktech.maven.publish.base")
2830
configureInventoryFrameworkPublication()
2931
}
3032
}
@@ -50,6 +52,7 @@ class LibraryConventionPlugin : Plugin<Project> {
5052
java {
5153
removeUnusedImports()
5254
palantirJavaFormat()
55+
targetExclude("build/generated/sources/ifversion/**/*.java")
5356
}
5457
kotlin {
5558
ktfmt().kotlinlangStyle()

build-logic/conventions/src/main/kotlin/Publish.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ import com.vanniktech.maven.publish.SonatypeHost
33
import org.gradle.api.Project
44
import org.gradle.kotlin.dsl.configure
55

6-
fun Project.configureInventoryFrameworkPublication() {
6+
internal fun Project.configureInventoryFrameworkPublication() {
7+
plugins.apply("com.vanniktech.maven.publish.base")
8+
79
extensions.configure<MavenPublishBaseExtension> {
810
publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL)
911
signAllPublications()

inventory-framework-platform-bukkit/build.gradle.kts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
import com.vanniktech.maven.publish.JavaLibrary
2-
import com.vanniktech.maven.publish.JavadocJar
3-
41
plugins {
52
id("me.devnatan.inventoryframework.library")
63
alias(libs.plugins.shadowjar)
@@ -9,6 +6,7 @@ plugins {
96

107
inventoryFramework {
118
publish = true
9+
generateVersionFile = true
1210
}
1311

1412
dependencies {

inventory-framework-platform-bukkit/src/main/java/me/devnatan/inventoryframework/runtime/InventoryFramework.java

Lines changed: 0 additions & 8 deletions
This file was deleted.

0 commit comments

Comments
 (0)