1
- import com.modrinth.minotaur.Minotaur
2
- import com.modrinth.minotaur.ModrinthExtension
3
1
import info.solidsoft.gradle.pitest.PitestPlugin
4
2
import info.solidsoft.gradle.pitest.PitestPluginExtension
5
- import net.darkhax.curseforgegradle.TaskPublishCurseForge
3
+ import me.modmuss50.mpp.ModPublishExtension
4
+ import me.modmuss50.mpp.MppPlugin
5
+ import me.modmuss50.mpp.ReleaseType
6
+ import net.fabricmc.loom.task.RemapJarTask
6
7
import org.gradle.api.Action
7
8
import org.gradle.api.Project
8
9
import org.gradle.api.publish.PublishingExtension
9
10
import org.gradle.api.publish.maven.MavenPublication
10
11
import org.gradle.api.tasks.testing.Test
12
+ import org.gradle.jvm.tasks.Jar
11
13
import org.gradle.kotlin.dsl.*
12
14
import org.sonarqube.gradle.SonarExtension
13
15
import org.sonarqube.gradle.SonarQubePlugin
@@ -25,49 +27,50 @@ open class BaseExtension(private val project: Project) {
25
27
if (options.maven == true ) {
26
28
enableMavenPublishing()
27
29
}
28
- options.curseForge?.let { enableCurseForgePublishing(it) }
29
- options.modrinth?.let { enableModrinthPublishing(it) }
30
- }
31
-
32
- private fun enableCurseForgePublishing (projectId : String ) {
33
- project.tasks.register<TaskPublishCurseForge >(" publishCurseForge" ) {
34
- apiToken = System .getenv(" CURSEFORGE_TOKEN" )
35
- val isNeoForge = project.pluginManager.hasPlugin(" net.neoforged.moddev" )
36
- val mainFile = upload(projectId, project.tasks.getByName(if (isNeoForge) " jar" else " remapJar" ))
37
- mainFile.releaseType = if (project.version.toString().contains(" beta" )) " beta" else if (project.version.toString().contains(" alpha" )) " alpha" else " release"
38
- mainFile.changelog = System .getenv(" RELEASE_CHANGELOG" )
39
- mainFile.changelogType = " markdown"
40
- mainFile.displayName = " v" + project.version.toString()
41
- mainFile.addGameVersion(mcVersion)
42
- // https://github.com/refinedmods/refinedarchitect/issues/149
43
- if (isNeoForge) {
44
- mainFile.addModLoader(" NeoForge" )
45
- } else {
46
- mainFile.addRequirement(" fabric-api" )
47
- }
48
- }
49
- }
50
-
51
- private fun enableModrinthPublishing (projId : String ) {
52
- project.plugins.apply (Minotaur ::class .java)
53
- val isNeoForge = project.pluginManager.hasPlugin(" net.neoforged.moddev" )
54
- project.extensions.getByType<ModrinthExtension >().apply {
55
- token.set(System .getenv(" MODRINTH_TOKEN" ))
56
- projectId.set(projId)
57
- uploadFile = project.tasks.getByName(if (isNeoForge) " jar" else " remapJar" )
58
- versionType.set(if (project.version.toString().contains(" beta" )) " beta" else if (project.version.toString().contains(" alpha" )) " alpha" else " release" )
59
- versionNumber.set(project.version.toString())
60
- versionName.set(" v" + project.version)
61
- // https://github.com/refinedmods/refinedarchitect/issues/149
62
- if (isNeoForge) {
63
- loaders.add(" neoforge" )
64
- gameVersions.add(mcVersion)
65
- } else {
66
- dependencies.apply {
67
- required.project(" fabric-api" )
30
+ if (options.curseForge != null || options.modrinth != null ) {
31
+ project.plugins.apply (MppPlugin ::class )
32
+ project.extensions.getByType(ModPublishExtension ::class ).apply {
33
+ val isNeoForge = project.pluginManager.hasPlugin(" net.neoforged.moddev" )
34
+ if (isNeoForge) {
35
+ val jar by project.tasks.getting(Jar ::class )
36
+ file.set(jar.archiveFile)
37
+ modLoaders.add(" NeoForge" )
38
+ } else {
39
+ val remapJar by project.tasks.getting(RemapJarTask ::class )
40
+ file.set(remapJar.archiveFile)
41
+ modLoaders.add(" Fabric" )
42
+ }
43
+ type.set(
44
+ if (project.version.toString()
45
+ .contains(" beta" )
46
+ ) ReleaseType .BETA else if (project.version.toString()
47
+ .contains(" alpha" )
48
+ ) ReleaseType .ALPHA else ReleaseType .STABLE
49
+ )
50
+ changelog.set(System .getenv(" RELEASE_CHANGELOG" ))
51
+ displayName.set(" v" + project.version.toString())
52
+ options.curseForge?.let {
53
+ curseforge {
54
+ accessToken.set(System .getenv(" CURSEFORGE_TOKEN" ))
55
+ minecraftVersions.add(mcVersion)
56
+ changelogType.set(" markdown" )
57
+ projectId.set(it)
58
+ if (! isNeoForge) {
59
+ requires(" fabric-api" )
60
+ }
61
+ }
62
+ }
63
+ options.modrinth?.let {
64
+ modrinth {
65
+ accessToken.set(System .getenv(" MODRINTH_TOKEN" ))
66
+ projectId.set(it)
67
+ minecraftVersions.add(mcVersion)
68
+ if (! isNeoForge) {
69
+ requires(" fabric-api" )
70
+ }
71
+ }
68
72
}
69
73
}
70
- changelog.set(System .getenv(" RELEASE_CHANGELOG" ))
71
74
}
72
75
}
73
76
@@ -81,7 +84,7 @@ open class BaseExtension(private val project: Project) {
81
84
coverageThreshold.set(80 )
82
85
}
83
86
project.dependencies.add(" testRuntimeOnly" , " org.junit.platform:junit-platform-launcher" )
84
- ?.because(" required for pitest" )
87
+ ?.because(" required for pitest" )
85
88
}
86
89
87
90
fun testing () {
@@ -131,7 +134,10 @@ open class BaseExtension(private val project: Project) {
131
134
property(" sonar.projectKey" , projectKey)
132
135
property(" sonar.organization" , organization)
133
136
property(" sonar.host.url" , " https://sonarcloud.io" )
134
- property(" sonar.coverage.jacoco.xmlReportPaths" , " ${project.layout.buildDirectory.get()} /reports/jacoco/codeCoverageReportAggregate/codeCoverageReportAggregate.xml" )
137
+ property(
138
+ " sonar.coverage.jacoco.xmlReportPaths" ,
139
+ " ${project.layout.buildDirectory.get()} /reports/jacoco/codeCoverageReportAggregate/codeCoverageReportAggregate.xml"
140
+ )
135
141
}
136
142
}
137
143
}
0 commit comments