Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release v0.19.0 #182

Merged
merged 6 commits into from
Sep 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/publish-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ jobs:
- name: Setup Java
uses: refinedmods/refinedarchitect/.github/actions/setup-java@develop
- name: Deploy to CurseForge
run: ./gradlew publishCurseForge
run: ./gradlew publishCurseforge

deploy-modrinth:
name: Deploy to Modrinth
Expand All @@ -179,7 +179,7 @@ jobs:
- name: Setup Java
uses: refinedmods/refinedarchitect/.github/actions/setup-java@develop
- name: Deploy to Modrinth
run: ./gradlew modrinth
run: ./gradlew publishModrinth

announce-discord:
name: Announce to Discord
Expand Down
14 changes: 13 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,16 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.19.0] - 2024-09-10

### Added

- Support for the Gradle config cache.

### Changed

- The CurseForge and Modrinth publishing has been updated to use modmuss' mod-publish-plugin.

## [0.18.0] - 2024-09-09

### Fixed
Expand Down Expand Up @@ -374,7 +384,9 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
- Gradle helpers for Fabric and Forge projects.
- CI workflows.

[Unreleased]: https://github.com/refinedmods/refinedarchitect/compare/v0.18.0...HEAD
[Unreleased]: https://github.com/refinedmods/refinedarchitect/compare/v0.19.0...HEAD

[0.19.0]: https://github.com/refinedmods/refinedarchitect/compare/v0.18.0...v0.19.0

[0.18.0]: https://github.com/refinedmods/refinedarchitect/compare/v0.17.1...v0.18.0

Expand Down
4 changes: 4 additions & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,2 +1,6 @@
# Gradle
org.gradle.jvmargs=-Xmx1G
org.gradle.configureondemand=true
org.gradle.caching=true
org.gradle.configuration-cache=true
org.gradle.configuration-cache.problems=warn
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
7 changes: 3 additions & 4 deletions refinedarchitect-plugin/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,12 @@ repositories {
}

dependencies {
implementation("net.neoforged:moddev-gradle:2.0.5-beta")
implementation("fabric-loom:fabric-loom.gradle.plugin:1.7-SNAPSHOT")
implementation("net.neoforged:moddev-gradle:2.0.27-beta")
implementation("fabric-loom:fabric-loom.gradle.plugin:1.8.0-alpha.9")
implementation("gradle.plugin.org.jetbrains.gradle.plugin.idea-ext:gradle-idea-ext:1.1.8")
implementation("info.solidsoft.gradle.pitest:gradle-pitest-plugin:1.15.0")
implementation("org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:4.4.1.3373")
implementation("net.darkhax.curseforgegradle:CurseForgeGradle:1.1.18")
implementation("com.modrinth.minotaur:Minotaur:2.8.7")
implementation("me.modmuss50:mod-publish-plugin:0.7.3")
}

publishing {
Expand Down
98 changes: 52 additions & 46 deletions refinedarchitect-plugin/src/main/kotlin/BaseExtension.kt
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
import com.modrinth.minotaur.Minotaur
import com.modrinth.minotaur.ModrinthExtension
import info.solidsoft.gradle.pitest.PitestPlugin
import info.solidsoft.gradle.pitest.PitestPluginExtension
import net.darkhax.curseforgegradle.TaskPublishCurseForge
import me.modmuss50.mpp.ModPublishExtension
import me.modmuss50.mpp.MppPlugin
import me.modmuss50.mpp.ReleaseType
import net.fabricmc.loom.task.RemapJarTask
import org.gradle.api.Action
import org.gradle.api.Project
import org.gradle.api.publish.PublishingExtension
import org.gradle.api.publish.maven.MavenPublication
import org.gradle.api.tasks.testing.Test
import org.gradle.jvm.tasks.Jar
import org.gradle.kotlin.dsl.*
import org.sonarqube.gradle.SonarExtension
import org.sonarqube.gradle.SonarQubePlugin
Expand All @@ -25,49 +27,50 @@ open class BaseExtension(private val project: Project) {
if (options.maven == true) {
enableMavenPublishing()
}
options.curseForge?.let { enableCurseForgePublishing(it) }
options.modrinth?.let { enableModrinthPublishing(it) }
}

private fun enableCurseForgePublishing(projectId: String) {
project.tasks.register<TaskPublishCurseForge>("publishCurseForge") {
apiToken = System.getenv("CURSEFORGE_TOKEN")
val isNeoForge = project.pluginManager.hasPlugin("net.neoforged.moddev")
val mainFile = upload(projectId, project.tasks.getByName(if (isNeoForge) "jar" else "remapJar"))
mainFile.releaseType = if (project.version.toString().contains("beta")) "beta" else if (project.version.toString().contains("alpha")) "alpha" else "release"
mainFile.changelog = System.getenv("RELEASE_CHANGELOG")
mainFile.changelogType = "markdown"
mainFile.displayName = "v" + project.version.toString()
mainFile.addGameVersion(mcVersion)
// https://github.com/refinedmods/refinedarchitect/issues/149
if (isNeoForge) {
mainFile.addModLoader("NeoForge")
} else {
mainFile.addRequirement("fabric-api")
}
}
}

private fun enableModrinthPublishing(projId: String) {
project.plugins.apply(Minotaur::class.java)
val isNeoForge = project.pluginManager.hasPlugin("net.neoforged.moddev")
project.extensions.getByType<ModrinthExtension>().apply {
token.set(System.getenv("MODRINTH_TOKEN"))
projectId.set(projId)
uploadFile = project.tasks.getByName(if (isNeoForge) "jar" else "remapJar")
versionType.set(if (project.version.toString().contains("beta")) "beta" else if (project.version.toString().contains("alpha")) "alpha" else "release")
versionNumber.set(project.version.toString())
versionName.set("v" + project.version)
// https://github.com/refinedmods/refinedarchitect/issues/149
if (isNeoForge) {
loaders.add("neoforge")
gameVersions.add(mcVersion)
} else {
dependencies.apply {
required.project("fabric-api")
if (options.curseForge != null || options.modrinth != null) {
project.plugins.apply(MppPlugin::class)
project.extensions.getByType(ModPublishExtension::class).apply {
val isNeoForge = project.pluginManager.hasPlugin("net.neoforged.moddev")
if (isNeoForge) {
val jar by project.tasks.getting(Jar::class)
file.set(jar.archiveFile)
modLoaders.add("NeoForge")
} else {
val remapJar by project.tasks.getting(RemapJarTask::class)
file.set(remapJar.archiveFile)
modLoaders.add("Fabric")
}
type.set(
if (project.version.toString()
.contains("beta")
) ReleaseType.BETA else if (project.version.toString()
.contains("alpha")
) ReleaseType.ALPHA else ReleaseType.STABLE
)
changelog.set(System.getenv("RELEASE_CHANGELOG"))
displayName.set("v" + project.version.toString())
options.curseForge?.let {
curseforge {
accessToken.set(System.getenv("CURSEFORGE_TOKEN"))
minecraftVersions.add(mcVersion)
changelogType.set("markdown")
projectId.set(it)
if (!isNeoForge) {
requires("fabric-api")
}
}
}
options.modrinth?.let {
modrinth {
accessToken.set(System.getenv("MODRINTH_TOKEN"))
projectId.set(it)
minecraftVersions.add(mcVersion)
if (!isNeoForge) {
requires("fabric-api")
}
}
}
}
changelog.set(System.getenv("RELEASE_CHANGELOG"))
}
}

Expand All @@ -81,7 +84,7 @@ open class BaseExtension(private val project: Project) {
coverageThreshold.set(80)
}
project.dependencies.add("testRuntimeOnly", "org.junit.platform:junit-platform-launcher")
?.because("required for pitest")
?.because("required for pitest")
}

fun testing() {
Expand Down Expand Up @@ -131,7 +134,10 @@ open class BaseExtension(private val project: Project) {
property("sonar.projectKey", projectKey)
property("sonar.organization", organization)
property("sonar.host.url", "https://sonarcloud.io")
property("sonar.coverage.jacoco.xmlReportPaths", "${project.layout.buildDirectory.get()}/reports/jacoco/codeCoverageReportAggregate/codeCoverageReportAggregate.xml")
property(
"sonar.coverage.jacoco.xmlReportPaths",
"${project.layout.buildDirectory.get()}/reports/jacoco/codeCoverageReportAggregate/codeCoverageReportAggregate.xml"
)
}
}
}
Expand Down
6 changes: 5 additions & 1 deletion refinedarchitect-plugin/src/main/kotlin/FabricExtension.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import net.fabricmc.loom.api.LoomGradleExtensionAPI
import org.gradle.api.Project
import org.gradle.api.plugins.JavaPluginExtension
import org.gradle.api.tasks.compile.JavaCompile
import org.gradle.jvm.tasks.Jar
import org.gradle.kotlin.dsl.get
Expand Down Expand Up @@ -56,6 +55,11 @@ open class FabricExtension(private val project: Project) : BaseExtension(project
source(project.configurations["commonJava"])
}
project.tasks.withType<ProcessResources>().configureEach {
val properties = mapOf("version" to project.version)
inputs.properties(properties)
filesMatching(listOf("fabric.mod.json")) {
expand(properties)
}
dependsOn(project.configurations["commonResources"])
from(project.configurations["commonResources"])
}
Expand Down
26 changes: 19 additions & 7 deletions refinedarchitect-plugin/src/main/kotlin/NeoForgeExtension.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@ import org.gradle.api.tasks.compile.JavaCompile
import org.gradle.jvm.tasks.Jar
import org.gradle.kotlin.dsl.get
import org.gradle.kotlin.dsl.getByType
import org.gradle.kotlin.dsl.register
import org.gradle.kotlin.dsl.withType
import org.gradle.language.jvm.tasks.ProcessResources
import net.neoforged.moddevgradle.dsl.NeoForgeExtension as NfExtension
import net.neoforged.moddevgradle.dsl.NeoForgeExtension as NeoForge

open class NeoForgeExtension(private val project: Project) : BaseExtension(project) {
var modId: String? = null
Expand All @@ -17,7 +18,16 @@ open class NeoForgeExtension(private val project: Project) : BaseExtension(proje
project.configurations["commonJava"].isCanBeConsumed = modId == null
project.configurations["commonResources"].isCanBeResolved = true
project.configurations["commonResources"].isCanBeConsumed = modId == null
project.extensions.getByType<NfExtension>().apply {
val generateModMetadata = project.tasks.register("generateModMetadata", ProcessResources::class) {
val properties = mapOf("version" to project.version)
inputs.properties(properties)
expand(properties)
from("src/main/templates")
into("build/generated/sources/modMetadata")
}
sourceSets["main"].resources.srcDir(generateModMetadata)
sourceSets["main"].resources.srcDirs.add(project.file("src/generated/resources"))
project.extensions.getByType<NeoForge>().apply {
version.set(neoForgeVersion)
addModdingDependenciesTo(sourceSets["test"])
if (modId != null) {
Expand All @@ -40,15 +50,17 @@ open class NeoForgeExtension(private val project: Project) : BaseExtension(proje
minecraftVersion.set(parchmentMcVersion)
mappingsVersion.set(parchmentVersion)
}
ideSyncTask(generateModMetadata)
}
sourceSets["main"].resources.srcDirs.add(project.file("src/generated/resources"))
project.tasks.withType<JavaCompile>().configureEach {
dependsOn(project.configurations["commonJava"])
source(project.configurations["commonJava"])
}
project.tasks.withType<ProcessResources>().configureEach {
dependsOn(project.configurations["commonResources"])
from(project.configurations["commonResources"])
if (name != "generateModMetadata") {
dependsOn(project.configurations["commonResources"])
from(project.configurations["commonResources"])
}
}
project.tasks.withType<Jar>().configureEach {
from("../LICENSE.md")
Expand All @@ -58,7 +70,7 @@ open class NeoForgeExtension(private val project: Project) : BaseExtension(proje
fun gameTests() {
project.dependencies.add("testImplementation", "net.neoforged:testframework:${neoForgeVersion}")
val sourceSets = project.extensions.getByType<JavaPluginExtension>().sourceSets
project.extensions.getByType<NfExtension>().apply {
project.extensions.getByType<NeoForge>().apply {
runs {
register("gameTestServer") {
type.set("gameTestServer")
Expand All @@ -74,7 +86,7 @@ open class NeoForgeExtension(private val project: Project) : BaseExtension(proje
}

fun dataGeneration(sourceProject: Project = project) {
project.extensions.getByType<NfExtension>().apply {
project.extensions.getByType<NeoForge>().apply {
runs {
create("data") {
data()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,14 +52,6 @@ checkstyle {
toolVersion = "10.17.0"
}

tasks.withType<ProcessResources> {
inputs.property("version", project.version)

filesMatching(listOf("fabric.mod.json", "META-INF/neoforge.mods.toml")) {
expand("version" to project.version)
}
}

artifacts {
add("commonJava", sourceSets["main"].java.sourceDirectories.singleFile)
add("commonResources", sourceSets["main"].resources.sourceDirectories.singleFile)
Expand Down
Loading