1+ import me.modmuss50.mpp.ReleaseType
2+ import me.modmuss50.mpp.platforms.curseforge.CurseforgeOptions
3+ import me.modmuss50.mpp.platforms.modrinth.ModrinthOptions
4+ import java.util.Locale
5+
6+ plugins {
7+ id(" me.modmuss50.mod-publish-plugin" ) version(" 1.1.0" )
8+ }
9+
10+ gradle.projectsEvaluated {
11+ publishMods {
12+ if (! project.hasProperty(" build.release" )) {
13+ return @publishMods println (" Publishing is disabled, please use the CI publishing workflow" )
14+ }
15+
16+ val releasePlatform: String = project.providers.gradleProperty(" build.release.platform" ).orNull
17+ ? : return @publishMods println (" build.release.platform must be defined (expected: both, fabric, neoforge)" )
18+
19+ val modVersion = BuildConfig .createVersionString(project);
20+
21+ type = when {
22+ modVersion.contains(" alpha" ) -> ReleaseType .ALPHA
23+ modVersion.contains(" beta" ) -> ReleaseType .BETA
24+ else -> ReleaseType .STABLE
25+ }
26+ version = modVersion
27+ changelog = BuildConfig .getChangelog(project)
28+
29+ val curseforgeShared = curseforgeOptions {
30+ accessToken = project.providers.environmentVariable(" CURSEFORGE_API_KEY" )
31+ projectId = BuildConfig .CURSEFORGE_PROJECT_ID
32+ minecraftVersions.add(BuildConfig .MINECRAFT_VERSION )
33+ }
34+
35+ val modrinthShared = modrinthOptions {
36+ accessToken = project.providers.environmentVariable(" MODRINTH_API_KEY" )
37+ projectId = BuildConfig .MODRINTH_PROJECT_ID
38+ minecraftVersions.add(BuildConfig .MINECRAFT_VERSION )
39+ }
40+
41+ setupFor(" Fabric" , releasePlatform, curseforgeShared, modrinthShared)
42+ setupFor(" NeoForge" , releasePlatform, curseforgeShared, modrinthShared)
43+
44+ github {
45+ accessToken = project.providers.environmentVariable(" GITHUB_TOKEN" )
46+ repository = " CaffeineMC/sodium"
47+ commitish = BuildConfig .calculateGitHash(project)
48+ tagName = BuildConfig .RELEASE_TAG
49+ file.unset()
50+ file.unsetConvention()
51+
52+ allowEmptyFiles = true
53+ }
54+ }
55+ }
56+
57+ fun me.modmuss50.mpp.ModPublishExtension.setupFor (loaderName : String , releasePlatform : String , curseforgeOptions : Provider <CurseforgeOptions >, modrinthOptions : Provider <ModrinthOptions >) {
58+ val loaderLowercase = loaderName.lowercase(Locale .ROOT )
59+
60+ if (releasePlatform == " both" || releasePlatform == loaderLowercase) {
61+ val jar = project(" :$loaderLowercase " ).tasks.named<Jar >(" jar" ).get().archiveFile
62+
63+ curseforge(" curseforge$loaderName " ) {
64+ from(curseforgeOptions)
65+
66+ file.set(jar)
67+ displayName = " Sodium ${BuildConfig .MOD_VERSION } for $loaderName ${BuildConfig .MINECRAFT_VERSION } "
68+ modLoaders.add(loaderLowercase)
69+
70+ clientRequired = true
71+ serverRequired = false
72+ }
73+
74+ modrinth(" modrinth$loaderName " ) {
75+ from(modrinthOptions)
76+
77+ file.set(jar)
78+ displayName = " Sodium ${BuildConfig .MOD_VERSION } for $loaderName ${BuildConfig .MINECRAFT_VERSION } "
79+ modLoaders.add(loaderLowercase)
80+ }
81+ }
82+ }
0 commit comments