Skip to content

Commit f8982e5

Browse files
committed
Migrate to mod-publish-plugin
1 parent 5d07ab0 commit f8982e5

File tree

5 files changed

+208
-133
lines changed

5 files changed

+208
-133
lines changed

.github/workflows/beta.yml

Lines changed: 6 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -64,62 +64,14 @@ jobs:
6464
- name: Build distribution
6565
run: ./gradlew createDist ${{ steps.versions.outputs.gradle_args }}
6666

67+
- name: Publish to Modrinth and GitHub
68+
run: ./gradlew publishMods ${{ steps.versions.outputs.gradle_args }}
69+
env:
70+
MODRINTH_TOKEN: ${{ secrets.MODRINTH_TOKEN }}
71+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
72+
6773
- name: Upload dist
6874
uses: actions/upload-artifact@v4
6975
with:
7076
name: beta-dist-${{ steps.versions.outputs.mod_version }}
7177
path: dist/**/*
72-
73-
publish:
74-
runs-on: ubuntu-latest
75-
needs: build
76-
steps:
77-
- name: Download dist
78-
uses: actions/download-artifact@v4
79-
with:
80-
name: beta-dist-${{ needs.build.outputs.mod_version }}
81-
path: dist
82-
83-
- name: List dist contents
84-
run: ls -R dist
85-
86-
- name: Create GitHub prerelease and upload artifacts
87-
uses: softprops/action-gh-release@v2
88-
with:
89-
tag_name: v${{ needs.build.outputs.mod_version }}-beta-${{ github.event.inputs.beta_number }}
90-
name: JsMacrosCE ${{ needs.build.outputs.mod_version }} (beta)
91-
body: |
92-
Beta build #${{ github.event.inputs.beta_number }} for JsMacrosCE ${{ needs.build.outputs.mod_version }}.
93-
Built game versions: ${{ needs.build.outputs.mc_versions }}
94-
files: |
95-
dist/jsmacrosce-*-fabric-${{ needs.build.outputs.mod_version }}.jar
96-
dist/jsmacrosce-*-neoforge-${{ needs.build.outputs.mod_version }}.jar
97-
dist/jsmacrosce-devkit-*-${{ needs.build.outputs.mod_version }}.zip
98-
dist/jsmacrosce-extensions-*-${{ needs.build.outputs.mod_version }}.zip
99-
dist/extensions/jsmacrosce-ext-*-${{ needs.build.outputs.mod_version }}.jar
100-
dist/*-source.zip
101-
fail_on_unmatched_files: false
102-
prerelease: true
103-
env:
104-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
105-
106-
- name: Publish to Modrinth
107-
uses: Kir-Antipov/[email protected]
108-
with:
109-
modrinth-id: ${{ env.MODRINTH_PROJECT }}
110-
modrinth-token: ${{ secrets.MODRINTH_TOKEN }}
111-
files: |
112-
dist/jsmacrosce-*-fabric-${{ needs.build.outputs.mod_version }}.jar
113-
dist/jsmacrosce-*-neoforge-${{ needs.build.outputs.mod_version }}.jar
114-
name: JsMacros ${{ needs.build.outputs.mod_version }} (beta)
115-
version: ${{ needs.build.outputs.mod_version }}-beta-${{ github.event.inputs.beta_number }}
116-
version-type: beta
117-
changelog: |
118-
Beta build #${{ github.event.inputs.beta_number }} for JsMacros ${{ needs.build.outputs.mod_version }}.
119-
Built game versions: ${{ needs.build.outputs.mc_versions }}
120-
loaders: |
121-
fabric
122-
neoforge
123-
game-versions: |
124-
${{ needs.build.outputs.mc_versions_list }}
125-
java: 21

.github/workflows/dev.yml

Lines changed: 4 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -42,37 +42,15 @@ jobs:
4242
echo "mod_version=${MOD_VERSION}" >> "$GITHUB_OUTPUT"
4343
echo "short_sha=${SHORT_SHA}" >> "$GITHUB_OUTPUT"
4444
45-
- name: Build distribution
45+
- name: Publish to GitHub
4646
run: |
4747
SHORT_SHA=${GITHUB_SHA::7}
48-
./gradlew createDist -Pchannel=dev -Pbuild_sha=${SHORT_SHA}
48+
./gradlew publishMods -Pchannel=dev -Pbuild_sha=${SHORT_SHA}
49+
env:
50+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4951

5052
- name: Upload dist
5153
uses: actions/upload-artifact@v4
5254
with:
5355
name: dev-dist-${{ steps.versions.outputs.mod_version }}
5456
path: dist/**/*
55-
56-
- name: Publish GitHub prerelease
57-
uses: softprops/action-gh-release@v2
58-
with:
59-
tag_name: v${{ steps.versions.outputs.mod_version }}
60-
name: Dev ${{ steps.versions.outputs.mod_version }}
61-
body: |
62-
Dev build for commit ${{ github.sha }}.
63-
64-
Alpha, beta, and release builds are available on Modrinth: https://modrinth.com/mod/jsmacrosce/versions
65-
prerelease: true
66-
generate_release_notes: false
67-
files: |
68-
dist/jsmacrosce-*-fabric-${{ steps.versions.outputs.mod_version }}.jar
69-
dist/jsmacrosce-*-neoforge-${{ steps.versions.outputs.mod_version }}.jar
70-
dist/jsmacrosce-devkit-*-${{ steps.versions.outputs.mod_version }}.zip
71-
dist/jsmacrosce-extensions-*-${{ steps.versions.outputs.mod_version }}.zip
72-
dist/extensions/jsmacrosce-ext-*-${{ steps.versions.outputs.mod_version }}.jar
73-
dist/*-source.zip
74-
fail_on_unmatched_files: false
75-
token: ${{ secrets.GITHUB_TOKEN }}
76-
env:
77-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
78-
GITHUB_REF: refs/tags/v${{ steps.versions.outputs.mod_version }}

.github/workflows/release.yml

Lines changed: 6 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -61,61 +61,14 @@ jobs:
6161
- name: Build distribution
6262
run: ./gradlew createDist ${{ steps.versions.outputs.gradle_args }}
6363

64+
- name: Publish to Modrinth and GitHub
65+
run: ./gradlew publishMods ${{ steps.versions.outputs.gradle_args }}
66+
env:
67+
MODRINTH_TOKEN: ${{ secrets.MODRINTH_TOKEN }}
68+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
69+
6470
- name: Upload dist
6571
uses: actions/upload-artifact@v4
6672
with:
6773
name: release-dist-${{ steps.versions.outputs.mod_version }}
6874
path: dist/**/*
69-
70-
publish:
71-
runs-on: ubuntu-latest
72-
needs: build
73-
steps:
74-
- name: Download dist
75-
uses: actions/download-artifact@v4
76-
with:
77-
name: release-dist-${{ needs.build.outputs.mod_version }}
78-
path: dist
79-
80-
- name: List dist contents
81-
run: ls -R dist
82-
83-
- name: Create GitHub release and upload artifacts
84-
uses: softprops/action-gh-release@v2
85-
with:
86-
tag_name: v${{ needs.build.outputs.mod_version }}
87-
name: JsMacrosCE ${{ needs.build.outputs.mod_version }}
88-
body: |
89-
Release for JsMacrosCE ${{ needs.build.outputs.mod_version }}.
90-
Built game versions: ${{ needs.build.outputs.mc_versions }}
91-
files: |
92-
dist/jsmacrosce-*-fabric-${{ needs.build.outputs.mod_version }}.jar
93-
dist/jsmacrosce-*-neoforge-${{ needs.build.outputs.mod_version }}.jar
94-
dist/jsmacrosce-devkit-*-${{ needs.build.outputs.mod_version }}.zip
95-
dist/jsmacrosce-extensions-*-${{ needs.build.outputs.mod_version }}.zip
96-
dist/extensions/jsmacrosce-ext-*-${{ needs.build.outputs.mod_version }}.jar
97-
dist/*-source.zip
98-
fail_on_unmatched_files: false
99-
env:
100-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
101-
102-
- name: Publish to Modrinth
103-
uses: Kir-Antipov/[email protected]
104-
with:
105-
modrinth-id: ${{ env.MODRINTH_PROJECT }}
106-
modrinth-token: ${{ secrets.MODRINTH_TOKEN }}
107-
files: |
108-
dist/jsmacrosce-*-fabric-${{ needs.build.outputs.mod_version }}.jar
109-
dist/jsmacrosce-*-neoforge-${{ needs.build.outputs.mod_version }}.jar
110-
name: JsMacros ${{ needs.build.outputs.mod_version }}
111-
version: ${{ needs.build.outputs.mod_version }}
112-
version-type: release
113-
changelog: |
114-
Release for JsMacros ${{ needs.build.outputs.mod_version }}.
115-
Built game versions: ${{ needs.build.outputs.mc_versions }}
116-
loaders: |
117-
fabric
118-
neoforge
119-
game-versions: |
120-
${{ needs.build.outputs.mc_versions_list }}
121-
java: 21

build.gradle.kts

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,24 @@
11
import dev.kikugie.stonecutter.build.StonecutterBuildExtension
2+
import me.modmuss50.mpp.PublishModTask
3+
import me.modmuss50.mpp.ReleaseType
24
import org.gradle.api.file.DuplicatesStrategy
35
import org.gradle.api.tasks.Copy
46
import org.gradle.api.tasks.SourceSetContainer
7+
import org.gradle.api.tasks.bundling.AbstractArchiveTask
58
import org.gradle.api.tasks.bundling.Zip
69
import org.gradle.api.tasks.javadoc.Javadoc
710
import org.gradle.external.javadoc.CoreJavadocOptions
811
import org.gradle.external.javadoc.StandardJavadocDocletOptions
12+
import org.gradle.internal.extensions.stdlib.capitalized
913
import java.io.File
1014
import java.time.ZoneId
1115
import java.time.ZonedDateTime
1216
import java.time.format.DateTimeFormatter
17+
import java.util.Locale
18+
19+
plugins {
20+
id("me.modmuss50.mod-publish-plugin") version "1.1.0"
21+
}
1322

1423
// Check if this is a Stonecutter versioned project by looking at the project path
1524
// Versioned projects have paths like ":1.21.10", ":common:1.21.10", etc.
@@ -303,6 +312,94 @@ if (isVersionedProject && hasMinecraftVersion) {
303312
println(mcVersion)
304313
}
305314
}
315+
316+
val releaseType = when (channel) {
317+
"release" -> ReleaseType.STABLE
318+
"beta" -> ReleaseType.BETA
319+
else -> ReleaseType.ALPHA
320+
}
321+
322+
val modrinthProjectId = providers.gradleProperty("modrinth_id")
323+
.orElse(providers.environmentVariable("MODRINTH_PROJECT"))
324+
val modrinthToken = providers.gradleProperty("modrinth_token")
325+
.orElse(providers.environmentVariable("MODRINTH_TOKEN"))
326+
val githubRepo = providers.gradleProperty("github_repository")
327+
.orElse(providers.environmentVariable("GITHUB_REPOSITORY"))
328+
.orElse("JsMacrosCE/JsMacros")
329+
val githubToken = providers.environmentVariable("GITHUB_TOKEN")
330+
val githubCommitish = providers.environmentVariable("GITHUB_SHA").orElse("main")
331+
val githubTagName = providers.provider { "v${project.version}" }
332+
val targetMcVersion = mcVersion
333+
334+
fun modrinthChangelog(loader: String): String = """
335+
JsMacrosCE ${project.version} for $loader on Minecraft $targetMcVersion.
336+
Source: https://github.com/JsMacrosCE/JsMacros
337+
""".trimIndent()
338+
339+
fun githubChangelog(): String = """
340+
${releaseType.toString().lowercase(Locale.getDefault()).capitalized()} Release for JsMacrosCE ${project.version}.
341+
Built game version: $targetMcVersion
342+
Alpha, beta, and release builds are available on Modrinth: https://modrinth.com/mod/jsmacrosce/versions
343+
""".trimIndent()
344+
345+
346+
publishMods {
347+
val publishModrinth = modrinthToken.isPresent && channel != "dev"
348+
349+
if (publishModrinth) {
350+
loaders.forEach { loader ->
351+
val platformName = "modrinth${loader.replaceFirstChar { it.uppercase() }}${targetMcVersion.replace(".", "")}"
352+
val sourceTaskName = if (loader == "fabric") "remapJar" else "jar"
353+
val loaderProject = project(":$loader")
354+
355+
modrinth(platformName) {
356+
projectId.set(modrinthProjectId)
357+
accessToken.set(modrinthToken)
358+
minecraftVersions.add(targetMcVersion)
359+
modLoaders.set(listOf(loader))
360+
361+
version.set("${project.version}+$targetMcVersion-$loader")
362+
displayName.set("JsMacrosCE ${project.version} ($loader $targetMcVersion)")
363+
changelog.set(modrinthChangelog(loader))
364+
type.set(releaseType)
365+
file.set(
366+
loaderProject.tasks.named(sourceTaskName, AbstractArchiveTask::class.java)
367+
.flatMap { it.archiveFile }
368+
)
369+
}
370+
}
371+
}
372+
373+
github("githubRelease") {
374+
accessToken.set(githubToken)
375+
repository.set(githubRepo)
376+
commitish.set(githubCommitish)
377+
tagName.set(githubTagName)
378+
displayName.set("JsMacrosCE ${project.version}")
379+
changelog.set(githubChangelog())
380+
type.set(releaseType)
381+
allowEmptyFiles.set(true)
382+
additionalFiles.from(
383+
providers.provider {
384+
distDir.asFileTree.matching {
385+
include("jsmacrosce-*-fabric-${project.version}.jar")
386+
include("jsmacrosce-*-neoforge-${project.version}.jar")
387+
include("jsmacrosce-devkit-*-${project.version}.zip")
388+
include("jsmacrosce-extensions-*-${project.version}.zip")
389+
include("extensions/jsmacrosce-ext-*-${project.version}.jar")
390+
}
391+
}
392+
)
393+
}
394+
}
395+
396+
tasks.named("publishMods") {
397+
dependsOn("createDist")
398+
}
399+
400+
tasks.withType(PublishModTask::class.java).configureEach {
401+
dependsOn("createDist")
402+
}
306403
}
307404
}
308405

0 commit comments

Comments
 (0)