feat: migrate to CurseForgeGradle
All checks were successful
ci/woodpecker/push/gradle Pipeline was successful
ci/woodpecker/push/pages Pipeline was successful

This commit is contained in:
Johannes Frohnmeyer 2024-08-02 19:20:33 +02:00
parent cc2ead1025
commit c88155651c
Signed by: Johannes
GPG Key ID: E76429612C2929F4
5 changed files with 31 additions and 23 deletions

View File

@ -5,5 +5,5 @@ plugins {
dependencies {
api(projects.lom)
implementation("com.modrinth.minotaur:Minotaur:2.8.7")
implementation("io.github.CDAGaming:CurseGradle:1.6.1")
implementation("net.darkhax.curseforgegradle:CurseForgeGradle:1.1.24")
}

View File

@ -1,32 +1,32 @@
import io.gitlab.jfronny.scripts.*
import net.darkhax.curseforgegradle.TaskPublishCurseForge
plugins {
id("jfmod")
id("com.matthewprenger.cursegradle")
id("net.darkhax.curseforgegradle")
}
val args = extensions.getByName("jfMod") as JfModExtension
curseforge {
if (System.getenv().containsKey("CURSEFORGE_API_TOKEN")) apiKey = System.getenv()["CURSEFORGE_API_TOKEN"]
else println("No CURSEFORGE_API_TOKEN specified")
project {
id = args.curseforge.projectId.get()
val curseforge by tasks.registering(TaskPublishCurseForge::class) {
if (System.getenv().containsKey("CURSEFORGE_API_TOKEN")) {
val tk = System.getenv()["CURSEFORGE_API_TOKEN"]
if ("debug" == tk) debugMode = true
else apiToken = tk
} else println("No CURSEFORGE_API_TOKEN specified")
disableVersionDetection()
upload(args.curseforge.projectId.get(), tasks.remapJar.get()) {
releaseType = versionType.curseforgeName
addGameVersion("Fabric")
addModLoader(args.loaderKind.get().curseforgeName)
addGameVersion(lom.minecraftVersion.get())
addJavaVersion("Java " + lom.javaVersion.get())
changelog = project.changelog
mainArtifact(tasks.remapJar.get()) {
displayName = "[${lom.minecraftVersion.get()}] $versionS"
}
relations {
args.curseforge.requiredDependencies.getOrElse(listOf()).forEach { requiredDependency(it) }
args.curseforge.optionalDependencies.getOrElse(listOf()).forEach { optionalDependency(it) }
}
}
options {
forgeGradleIntegration = false
changelogType = "markdown"
displayName = "[${lom.minecraftVersion.get()}] $versionS"
addRequirement(*args.curseforge.requiredDependencies.getOrElse(listOf()).toTypedArray())
addOptional(*args.curseforge.optionalDependencies.getOrElse(listOf()).toTypedArray())
}
}
tasks.deployRelease.dependsOn(tasks.curseforge)
tasks.deployRelease.dependsOn(curseforge)

View File

@ -2,8 +2,10 @@ package io.gitlab.jfronny.scripts
import java.util.*
enum class LoaderKind {
NEOFORGE, FORGE, FABRIC;
enum class LoaderKind(val curseforgeName: String) {
NEOFORGE("NeoForge"),
FORGE("Forge"),
FABRIC("Fabric");
companion object {
fun fromString(str: String) = valueOf(str.uppercase(Locale.getDefault()))

View File

@ -3,6 +3,7 @@ package io.gitlab.jfronny.scripts
import org.gradle.api.DefaultTask
import org.gradle.api.artifacts.ProjectDependency
import org.gradle.api.artifacts.dsl.DependencyHandler
import org.gradle.api.provider.Provider
import org.gradle.api.tasks.SourceSet
import org.gradle.api.tasks.SourceSetContainer
import org.gradle.api.tasks.TaskContainer
@ -25,4 +26,9 @@ fun DependencyHandler.devProject(path: String): ProjectDependency = project(path
val LomExtension.isFabric: Boolean get() = loaderKind.get() == LoaderKind.FABRIC
val LomExtension.isForge: Boolean get() = loaderKind.get() == LoaderKind.FORGE
val LomExtension.isNeoForge: Boolean get() = loaderKind.get() == LoaderKind.NEOFORGE
val LomExtension.isSplitSources: Boolean get() = isFabric // other loaders don't support split sources
val LomExtension.isSplitSources: Boolean get() = isFabric // other loaders don't support split sources
val LomExtension.javaVersion: Provider<Int> get() = minecraftVersion.map {
if (SemanticVersion.parse(it) > SemanticVersion(1, 20, 4, VersionType.RELEASE)) 21
else 17
}

View File

@ -246,7 +246,7 @@ afterEvaluate {
// from fabric-example-mod, enforces modern java
tasks.withType<JavaCompile>().configureEach {
options.encoding = "UTF-8"
options.release.set(if (SemanticVersion.parse(args.minecraftVersion.get()) > SemanticVersion(1, 20, 4, VersionType.RELEASE)) 21 else 17)
options.release = args.javaVersion
}
// otherwise we can't easily overwrite the artifacts to publish while keeping dependency metadata