Skip to content

Commit c43b5e7

Browse files
committed
Switch to mod-publish-plugin
1 parent 001ff5d commit c43b5e7

File tree

4 files changed

+116
-103
lines changed

4 files changed

+116
-103
lines changed

.github/workflows/release.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ jobs:
3434
if: ${{ runner.os != 'Windows' }}
3535
run: chmod +x ./gradlew
3636
- name: Build
37-
run: ./gradlew build neoforge:githubRelease neoforge:modrinth neoforge:curseforge fabric:githubRelease fabric:modrinth fabric:curseforge --stacktrace
37+
# run: ./gradlew build neoforge:publishGithub fabric:publishGithub --stacktrace
38+
run: ./gradlew build neoforge:publishGithub neoforge:publishModrinth neoforge:publishCurseforge fabric:publishGithub fabric:publishModrinth fabric:publishCurseforge --stacktrace
3839
env:
3940
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4041
MODRINTH_TOKEN: ${{ secrets.MODRINTH_TOKEN }}

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Changelog
22

3-
## 1.0.0
3+
## 1.0.3
44

55
- Added something
66
- Fixed something else

build.gradle

Lines changed: 106 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
plugins {
22
id("fabric-loom") version("${loom_version}") apply(false)
33
id("net.neoforged.moddev") version("${moddev_version}") apply(false)
4-
id("com.modrinth.minotaur") version("${minotaur_version}")
5-
id("net.darkhax.curseforgegradle") version("${curseforgegradle_version}")
6-
id("com.github.breadmoirai.github-release") version("${githubrelease_version}")
4+
id("me.modmuss50.mod-publish-plugin") version("${mpp_version}")
75
id("org.ajoberstar.grgit.service") version("${grgitservice_version}")
86
id("org.cadixdev.licenser") version("${licenser_version}")
97
}
@@ -37,112 +35,130 @@ subprojects {
3735
}
3836
} else {
3937
// Publishing
40-
apply(plugin: "com.modrinth.minotaur")
41-
apply(plugin: "net.darkhax.curseforgegradle")
42-
apply(plugin: "com.github.breadmoirai.github-release")
38+
apply(plugin: "me.modmuss50.mod-publish-plugin")
4339
apply(plugin: "org.ajoberstar.grgit.service")
4440

4541
afterEvaluate {
46-
modrinth {
47-
token = System.getenv().MODRINTH_TOKEN ? System.getenv().MODRINTH_TOKEN : "empty"
48-
projectId = modrinth_id
49-
versionNumber = mod_version
50-
versionType = release_type
51-
versionName = "v${mod_version}-${capsLoader(name)}"
52-
changelog = versionChangelog()
53-
uploadFile = name == "fabric" ? remapJar : jar
54-
loaders = project.property("release_mod_loaders_${name}").split(",") as List
55-
gameVersions = project.property("release_game_versions_${name}").split(",") as List
56-
57-
def deps = []
58-
if (project.hasProperty("release_required_dep_ids_${name}_mr")) {
59-
project.property("release_required_dep_ids_${name}_mr").split(",").each { String id ->
60-
deps << new com.modrinth.minotaur.dependencies.ModDependency(id, "required")
61-
}
62-
}
63-
if (project.hasProperty("release_optional_dep_ids_${name}_mr")) {
64-
project.property("release_optional_dep_ids_${name}_mr").split(",").each { String id ->
65-
deps << new com.modrinth.minotaur.dependencies.ModDependency(id, "optional")
66-
}
42+
publishMods {
43+
file = project.name == "fabric" ? remapJar.archiveFile : jar.archiveFile
44+
version = mod_version
45+
// type = me.modmuss50.mpp.ReleaseType.of(release_type)
46+
displayName = "v${mod_version}-${capsLoader(project.name)}"
47+
project.property("release_mod_loaders_${project.name}").split(",").each { String loader ->
48+
modLoaders.add(loader)
6749
}
68-
if (project.hasProperty("release_incompatible_dep_ids_${name}_mr")) {
69-
project.property("release_incompatible_dep_ids_${name}_mr").split(",").each { String id ->
70-
deps << new com.modrinth.minotaur.dependencies.ModDependency(id, "incompatible")
71-
}
72-
}
73-
dependencies = deps
74-
syncBodyFrom = rootProject.file("README.md").text
75-
}
76-
tasks.modrinth.onlyIf { System.getenv().MODRINTH_TOKEN }
77-
tasks.modrinth.dependsOn(build, tasks.modrinthSyncBody)
78-
tasks.modrinthSyncBody.onlyIf { System.getenv().MODRINTH_TOKEN }
50+
maxRetries = 5
7951

80-
task curseforge(type: net.darkhax.curseforgegradle.TaskPublishCurseForge) {
81-
apiToken = System.getenv().CURSEFORGE_TOKEN ? System.getenv().CURSEFORGE_TOKEN : "empty"
52+
discord {
53+
webhookUrl = providers.environmentVariable("DISCORD_WEBHOOK")
54+
// dryRunWebhookUrl = providers.environmentVariable("DISCORD_WEBHOOK_DRY_RUN")
55+
username = mod_name
56+
avatarUrl = "https://github.com/${github_repo}/HEAD/common/src/main/resources/assets/${mod_id}/icon.png"
8257

83-
disableVersionDetection()
84-
String module = project.name
58+
// Set the content message, in this example a header is added before the changelog. Defaults to just the changelog
59+
// content = changelog.map { "# A new version of my cool mod has been released! \n" + it}
60+
}
8561

86-
def file = upload(curseforge_id, module == "fabric" ? remapJar : jar)
87-
file.displayName = "v${mod_version}-${capsLoader(module)}"
88-
file.releaseType = release_type
89-
file.changelog = versionChangelog()
90-
file.changelogType = "markdown"
91-
project.property("release_mod_loaders_${module}").split(",").each { String id ->
92-
file.addModLoader(id)
62+
github {
63+
dryRun = providers.environmentVariable("GITHUB_TOKEN").getOrNull() == null
64+
accessToken = providers.environmentVariable("GITHUB_TOKEN")
65+
// repository = github_repo
66+
// commitish = grgitService.service.get().grgit.branch.current().name
67+
// tagName = "v${mod_version}"
68+
allowEmptyFiles = true
69+
announcementTitle = "Download from GitHub"
70+
// parent tasks.named("publishGithub")
71+
parent project(":").tasks.named("publishGithub")
72+
additionalFiles.from(sourcesJar.archiveFile)
9373
}
94-
project.property("release_game_versions_${module}").split(",").each { String id ->
95-
file.addGameVersion(id, module)
74+
modrinth {
75+
dryRun = providers.environmentVariable("MODRINTH_TOKEN").getOrNull() == null
76+
accessToken = providers.environmentVariable("MODRINTH_TOKEN")
77+
projectId = modrinth_id
78+
minecraftVersions.addAll(project.property("release_game_versions_${project.name}").split(","))
79+
changelog = versionChangelog()
80+
announcementTitle = "Download from Modrinth"
81+
projectDescription = providers.fileContents(layout.projectDirectory.file("README.md")).asText
82+
if (project.hasProperty("release_required_dep_ids_${project.name}_mr")) {
83+
project.property("release_required_dep_ids_${project.name}_mr").split(",").each { String mrId ->
84+
requires { id = mrId }
85+
}
86+
}
87+
if (project.hasProperty("release_optional_dep_ids_${project.name}_mr")) {
88+
project.property("release_optional_dep_ids_${project.name}_mr").split(",").each { String mrId ->
89+
optional { id = mrId }
90+
}
91+
}
92+
if (project.hasProperty("release_incompatible_dep_ids_${project.name}_mr")) {
93+
project.property("release_incompatible_dep_ids_${project.name}_mr").split(",").each { String mrId ->
94+
incompatible { id = mrId }
95+
}
96+
}
97+
if (project.hasProperty("release_embedded_dep_ids_${project.name}_mr")) {
98+
project.property("release_embedded_dep_ids_${project.name}_mr").split(",").each { String mrId ->
99+
embeds { id = mrId }
100+
}
101+
}
96102
}
103+
curseforge {
104+
dryRun = providers.environmentVariable("CURSEFORGE_TOKEN").getOrNull() == null
105+
accessToken = providers.environmentVariable("CURSEFORGE_TOKEN")
106+
projectId = curseforge_id
107+
minecraftVersions.addAll(project.property("release_game_versions_${project.name}").split(","))
108+
changelog = versionChangelog()
109+
announcementTitle = "Download from CurseForge"
110+
javaVersions.add(JavaVersion.current())
111+
clientRequired = true
112+
projectSlug = curseforge_slug
97113

98-
if (project.hasProperty("release_required_dep_ids_${module}_cf")) {
99-
project.property("release_required_dep_ids_${module}_cf").split(",").each { String id ->
100-
file.addRequirement(id)
114+
if (project.hasProperty("release_required_dep_ids_${project.name}_cf")) {
115+
project.property("release_required_dep_ids_${project.name}_cf").split(",").each { String slug ->
116+
requires(slug)
117+
}
101118
}
102-
}
103-
if (project.hasProperty("release_optional_dep_ids_${module}_cf")) {
104-
project.property("release_optional_dep_ids_${module}_cf").split(",").each { String id ->
105-
file.addOptional(id)
119+
if (project.hasProperty("release_optional_dep_ids_${project.name}_cf")) {
120+
project.property("release_optional_dep_ids_${project.name}_cf").split(",").each { String slug ->
121+
optional(slug)
122+
}
106123
}
107-
}
108-
if (project.hasProperty("release_incompatible_dep_ids_${module}_cf")) {
109-
project.property("release_incompatible_dep_ids_${module}_cf").split(",").each { String id ->
110-
file.addIncompatibility(id)
124+
if (project.hasProperty("release_incompatible_dep_ids_${project.name}_cf")) {
125+
project.property("release_incompatible_dep_ids_${project.name}_cf").split(",").each { String slug ->
126+
incompatible(slug)
127+
}
128+
}
129+
if (project.hasProperty("release_embedded_dep_ids_${project.name}_cf")) {
130+
project.property("release_embedded_dep_ids_${project.name}_cf").split(",").each { String slug ->
131+
embeds(slug)
132+
}
111133
}
112134
}
113135
}
114-
tasks.curseforge.onlyIf { System.getenv().CURSEFORGE_TOKEN }
115-
tasks.curseforge.dependsOn(build)
116-
117-
githubRelease {
118-
token = System.getenv().GITHUB_TOKEN ? System.getenv().GITHUB_TOKEN : "empty"
119-
owner = github_repo_owner
120-
repo = github_repo
121-
tagName = "v${mod_version}"
122-
prerelease = release_type == "alpha" || release_type == "beta"
123-
releaseName = "v${mod_version}"
124-
125-
String changelog = "\n\n## Changelog\n\n" + versionChangelog()
126-
String versions = "## MC versions\n\n"
127-
if (project.hasProperty("release_game_versions_fabric"))
128-
versions = String.format("%s - Fabric: %s\n", versions,
129-
project.property("release_game_versions_fabric"))
130-
if (project.hasProperty("release_game_versions_neoforge"))
131-
versions = String.format("%s - NeoForge: %s\n", versions,
132-
project.property("release_game_versions_neoforge"))
133-
body = versions + changelog
134-
135-
targetCommitish = grgitService.service.get().grgit.branch.current().name
136-
overwrite = false
137-
allowUploadToExisting = true
138-
releaseAssets = List.of(name == "fabric" ? remapJar : jar, sourcesJar)
139-
}
140-
tasks.githubRelease.onlyIf { System.getenv().GITHUB_TOKEN }
141-
tasks.githubRelease.dependsOn(build)
136+
tasks.publishMods.dependsOn(build)
142137
}
143138
}
144139
}
145140

141+
publishMods {
142+
version = mod_version
143+
type = me.modmuss50.mpp.ReleaseType.of(release_type)
144+
145+
github {
146+
accessToken = providers.environmentVariable("GITHUB_TOKEN")
147+
repository = github_repo
148+
commitish = grgitService.service.get().grgit.branch.current().name
149+
tagName = "v${mod_version}"
150+
allowEmptyFiles = true
151+
String versions = "## MC versions\n\n"
152+
if (project.hasProperty("release_game_versions_fabric"))
153+
versions = String.format("%s - Fabric: %s\n", versions,
154+
project.property("release_game_versions_fabric"))
155+
if (project.hasProperty("release_game_versions_neoforge"))
156+
versions = String.format("%s - NeoForge: %s\n", versions,
157+
project.property("release_game_versions_neoforge"))
158+
changelog = versions + "\n\n## Changelog\n\n" + versionChangelog()
159+
}
160+
}
161+
146162
String versionChangelog() {
147163
List<String> lines = rootProject.file("CHANGELOG.md").readLines()
148164
StringBuilder builder = new StringBuilder()

gradle.properties

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# Neo/Forge version ranges: https://maven.apache.org/enforcer/enforcer-rules/versionRanges.html
44

55
# Project
6-
mod_version=1.0.0+1.21
6+
mod_version=1.0.3+1.21
77
mod_group=dev.terminalmc
88
mod_id=framework
99
mod_name=Framework
@@ -62,12 +62,12 @@ modmenu_versions_fabric=>10
6262

6363
# GitHub, Modrinth, CurseForge releases
6464
# Plural properties expect CSV lists
65-
github_repo_owner=TerminalMC
66-
github_repo=Framework
65+
github_repo=TerminalMC/Framework
6766
modrinth_id=raDGbHBr
6867
curseforge_id=833352
69-
# 'release', 'alpha' or 'beta'
70-
release_type=release
68+
curseforge_slug=tmc-framework
69+
# 'STABLE', 'BETA' or 'ALPHA'
70+
release_type=STABLE
7171
# Fabric
7272
release_mod_loaders_fabric=fabric
7373
release_game_versions_fabric=1.21,1.21.1
@@ -89,12 +89,8 @@ mixinextras_version=0.4.1
8989
loom_version=1.7.4
9090
# ModDev https://plugins.gradle.org/plugin/net.neoforged.moddev
9191
moddev_version=1.0.19
92-
# Minotaur https://plugins.gradle.org/plugin/com.modrinth.minotaur
93-
minotaur_version=2.8.7
94-
# CurseForgeGradle https://plugins.gradle.org/plugin/net.darkhax.curseforgegradle
95-
curseforgegradle_version=1.1.25
96-
# github-release https://plugins.gradle.org/plugin/com.github.breadmoirai.github-release
97-
githubrelease_version=2.5.2
92+
# Mod Publish Plugin https://plugins.gradle.org/plugin/me.modmuss50.mod-publish-plugin
93+
mpp_version=0.8.1
9894
# grgit-service https://github.com/ajoberstar/grgit/releases
9995
grgitservice_version=5.2.2
10096
# licenser https://plugins.gradle.org/plugin/org.cadixdev.licenser

0 commit comments

Comments
 (0)