Skip to content

Commit

Permalink
Sync with Framework
Browse files Browse the repository at this point in the history
  • Loading branch information
NotRyken committed Dec 9, 2024
1 parent 06af407 commit e4f85e8
Show file tree
Hide file tree
Showing 5 changed files with 120 additions and 122 deletions.
3 changes: 2 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ jobs:
if: ${{ runner.os != 'Windows' }}
run: chmod +x ./gradlew
- name: Build
run: ./gradlew build neoforge:githubRelease neoforge:modrinth neoforge:curseforge fabric:githubRelease fabric:modrinth fabric:curseforge --stacktrace
# run: ./gradlew build neoforge:publishGithub fabric:publishGithub --stacktrace
run: ./gradlew build neoforge:publishGithub neoforge:publishModrinth neoforge:publishCurseforge fabric:publishGithub fabric:publishModrinth fabric:publishCurseforge --stacktrace
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
MODRINTH_TOKEN: ${{ secrets.MODRINTH_TOKEN }}
Expand Down
207 changes: 104 additions & 103 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
plugins {
id("fabric-loom") version("${loom_version}") apply(false)
id("net.neoforged.moddev") version("${moddev_version}") apply(false)
id("com.modrinth.minotaur") version("${minotaur_version}")
id("net.darkhax.curseforgegradle") version("${curseforgegradle_version}")
id("com.github.breadmoirai.github-release") version("${githubrelease_version}")
id("me.modmuss50.mod-publish-plugin") version("${mpp_version}")
id("org.ajoberstar.grgit.service") version("${grgitservice_version}")
id("org.cadixdev.licenser") version("${licenser_version}")
}
Expand All @@ -30,126 +28,129 @@ subprojects {
}
} else {
// Publishing
apply(plugin: "com.modrinth.minotaur")
apply(plugin: "net.darkhax.curseforgegradle")
apply(plugin: "com.github.breadmoirai.github-release")
apply(plugin: "me.modmuss50.mod-publish-plugin")
apply(plugin: "org.ajoberstar.grgit.service")

afterEvaluate {
modrinth {
token = System.getenv().MODRINTH_TOKEN ? System.getenv().MODRINTH_TOKEN : "empty"
projectId = modrinth_id
versionNumber = mod_version
versionType = release_type
versionName = "v${mod_version}-${capsLoader(name)}"
changelog = versionChangelog()
uploadFile = name == "fabric" ? remapJar : jar
loaders = project.property("release_mod_loaders_${name}").split(",") as List
gameVersions = project.property("release_game_versions_${name}").split(",") as List

def deps = []
if (project.hasProperty("release_required_dep_ids_${name}_mr")) {
project.property("release_required_dep_ids_${name}_mr").split(",").each { String id ->
deps << new com.modrinth.minotaur.dependencies.ModDependency(id, "required")
}
publishMods {
file = project.name == "fabric" ? remapJar.archiveFile : jar.archiveFile
version = mod_version
type = me.modmuss50.mpp.ReleaseType.of(release_type)
displayName = "v${mod_version}-${capsLoader(project.name)}"
modLoaders.addAll(project.property("release_mod_loaders_${project.name}").split(","))
maxRetries = 5
github {
dryRun = providers.environmentVariable("GITHUB_TOKEN").getOrNull() == null
accessToken = providers.environmentVariable("GITHUB_TOKEN")
parent project(":").tasks.named("publishGithub")
additionalFiles.from(sourcesJar.archiveFile)
}
if (project.hasProperty("release_optional_dep_ids_${name}_mr")) {
project.property("release_optional_dep_ids_${name}_mr").split(",").each { String id ->
deps << new com.modrinth.minotaur.dependencies.ModDependency(id, "optional")
modrinth {
dryRun = providers.environmentVariable("MODRINTH_TOKEN").getOrNull() == null
accessToken = providers.environmentVariable("MODRINTH_TOKEN")
projectId = modrinth_id
minecraftVersions.addAll(project.property("release_game_versions_${project.name}").split(","))
changelog = versionChangelog()
if (project.hasProperty("release_required_dep_ids_${project.name}_mr")) {
project.property("release_required_dep_ids_${project.name}_mr").split(",").each { String mrId ->
requires { id = mrId }
}
}
}
if (project.hasProperty("release_incompatible_dep_ids_${name}_mr")) {
project.property("release_incompatible_dep_ids_${name}_mr").split(",").each { String id ->
deps << new com.modrinth.minotaur.dependencies.ModDependency(id, "incompatible")
if (project.hasProperty("release_optional_dep_ids_${project.name}_mr")) {
project.property("release_optional_dep_ids_${project.name}_mr").split(",").each { String mrId ->
optional { id = mrId }
}
}
}
dependencies = deps
syncBodyFrom = rootProject.file("README.md").text
}
tasks.modrinth.onlyIf { System.getenv().MODRINTH_TOKEN }
tasks.modrinth.dependsOn(build, tasks.modrinthSyncBody)
tasks.modrinthSyncBody.onlyIf { System.getenv().MODRINTH_TOKEN }

task curseforge(type: net.darkhax.curseforgegradle.TaskPublishCurseForge) {
apiToken = System.getenv().CURSEFORGE_TOKEN ? System.getenv().CURSEFORGE_TOKEN : "empty"

disableVersionDetection()
String module = project.name

def file = upload(curseforge_id, module == "fabric" ? remapJar : jar)
file.displayName = "v${mod_version}-${capsLoader(module)}"
file.releaseType = release_type
file.changelog = versionChangelog()
file.changelogType = "markdown"
project.property("release_mod_loaders_${module}").split(",").each { String id ->
file.addModLoader(id)
}
project.property("release_game_versions_${module}").split(",").each { String id ->
file.addGameVersion(id, module)
}

if (project.hasProperty("release_required_dep_ids_${module}_cf")) {
project.property("release_required_dep_ids_${module}_cf").split(",").each { String id ->
file.addRequirement(id)
if (project.hasProperty("release_incompatible_dep_ids_${project.name}_mr")) {
project.property("release_incompatible_dep_ids_${project.name}_mr").split(",").each { String mrId ->
incompatible { id = mrId }
}
}
}
if (project.hasProperty("release_optional_dep_ids_${module}_cf")) {
project.property("release_optional_dep_ids_${module}_cf").split(",").each { String id ->
file.addOptional(id)
if (project.hasProperty("release_embedded_dep_ids_${project.name}_mr")) {
project.property("release_embedded_dep_ids_${project.name}_mr").split(",").each { String mrId ->
embeds { id = mrId }
}
}
// Sync Modrinth description with GitHub README
projectDescription = providers.fileContents(layout.projectDirectory.file("README.md")).asText
}
if (project.hasProperty("release_incompatible_dep_ids_${module}_cf")) {
project.property("release_incompatible_dep_ids_${module}_cf").split(",").each { String id ->
file.addIncompatibility(id)
curseforge {
dryRun = providers.environmentVariable("CURSEFORGE_TOKEN").getOrNull() == null
accessToken = providers.environmentVariable("CURSEFORGE_TOKEN")
projectId = curseforge_id
projectSlug = curseforge_slug
minecraftVersions.addAll(project.property("release_game_versions_${project.name}").split(","))
changelog = versionChangelog()
if (project.hasProperty("release_required_dep_ids_${project.name}_cf")) {
project.property("release_required_dep_ids_${project.name}_cf").split(",").each { String slug ->
requires(slug)
}
}
if (project.hasProperty("release_optional_dep_ids_${project.name}_cf")) {
project.property("release_optional_dep_ids_${project.name}_cf").split(",").each { String slug ->
optional(slug)
}
}
if (project.hasProperty("release_incompatible_dep_ids_${project.name}_cf")) {
project.property("release_incompatible_dep_ids_${project.name}_cf").split(",").each { String slug ->
incompatible(slug)
}
}
if (project.hasProperty("release_embedded_dep_ids_${project.name}_cf")) {
project.property("release_embedded_dep_ids_${project.name}_cf").split(",").each { String slug ->
embeds(slug)
}
}
}
}
tasks.curseforge.onlyIf { System.getenv().CURSEFORGE_TOKEN }
tasks.curseforge.dependsOn(build)

githubRelease {
token = System.getenv().GITHUB_TOKEN ? System.getenv().GITHUB_TOKEN : "empty"
owner = github_repo_owner
repo = github_repo
tagName = "v${mod_version}"
prerelease = release_type == "alpha" || release_type == "beta"
releaseName = "v${mod_version}"

String changelog = "\n\n## Changelog\n\n" + versionChangelog()
String versions = "## MC versions\n\n"
if (project.hasProperty("release_game_versions_fabric"))
versions = String.format("%s - Fabric: %s\n", versions,
project.property("release_game_versions_fabric"))
if (project.hasProperty("release_game_versions_neoforge"))
versions = String.format("%s - NeoForge: %s\n", versions,
project.property("release_game_versions_neoforge"))
body = versions + changelog

targetCommitish = grgitService.service.get().grgit.branch.current().name
overwrite = false
allowUploadToExisting = true
releaseAssets = List.of(name == "fabric" ? remapJar : jar, sourcesJar)
}
tasks.githubRelease.onlyIf { System.getenv().GITHUB_TOKEN }
tasks.githubRelease.dependsOn(build)
}
}
}

publishMods {
// This task is necessary to allow publishing files from multiple
// subprojects to a single GitHub release.
version = mod_version
type = me.modmuss50.mpp.ReleaseType.of(release_type)
github {
dryRun = providers.environmentVariable("GITHUB_TOKEN").getOrNull() == null
accessToken = providers.environmentVariable("GITHUB_TOKEN")
repository = github_repo
commitish = grgitService.service.get().grgit.branch.current().name
tagName = "v${mod_version}"
allowEmptyFiles = true
// Include compatible MC version lists in description
String versions = "## MC versions\n\n"
if (project.hasProperty("release_game_versions_fabric"))
versions = String.format("%s - Fabric: %s\n", versions,
project.property("release_game_versions_fabric"))
if (project.hasProperty("release_game_versions_neoforge"))
versions = String.format("%s - NeoForge: %s\n", versions,
project.property("release_game_versions_neoforge"))
changelog = versions + "\n\n## Changelog\n\n" + versionChangelog()
}
}

String versionChangelog() {
List<String> lines = rootProject.file("CHANGELOG.md").readLines()
StringBuilder builder = new StringBuilder()
for (int i = 4; i < lines.size(); i++) {
String line = lines.get(i)
if (line.isBlank()) {
// pass
} else if (line.startsWith("## ")) {
break
}
else {
if (!builder.isEmpty()) builder.append("\n")
builder.append(line)
if ("${mod_version}".startsWith(lines.get(2).substring(3))) {
for (int i = 4; i < lines.size(); i++) {
String line = lines.get(i)
if (line.isBlank()) {
// pass
} else if (line.startsWith("## ")) {
break
}
else {
if (!builder.isEmpty()) builder.append("\n")
builder.append(line)
}
}
} else {
throw new IllegalArgumentException(
String.format("Mod version '%s' does not start with changelog version '%s'",
mod_version, lines.get(2).substring(3)))
}
return builder.toString()
}
Expand Down
3 changes: 1 addition & 2 deletions fabric/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,8 @@ dependencies {
parchment("org.parchmentmc.data:parchment-${parchment_minecraft_version}:${parchment_version}@zip")
}

// Fabric loader and API
// Fabric loader
modImplementation("net.fabricmc:fabric-loader:${fabric_loader_version}")
modImplementation("net.fabricmc.fabric-api:fabric-api:${fabric_api_version}")

// JiJ MixinExtras if required to be newer than minimum loader-provided version
// include(implementation(annotationProcessor("io.github.llamalad7:mixinextras-fabric:${mixinextras_version}")))
Expand Down
27 changes: 12 additions & 15 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# SemVer: https://semver.org, generally {major.minor.patch}[-prerelease.{number}]+{mc_version}
# Fabric version ranges: https://www.npmjs.com/package/semver#ranges, list by split(',')
# Neo/Forge version ranges: https://maven.apache.org/enforcer/enforcer-rules/versionRanges.html

Expand Down Expand Up @@ -30,10 +31,10 @@ minecraft_versions_neoforge=(1.20.6, 1.22)

# Parchment https://parchmentmc.org/docs/getting-started#choose-a-version
parchment_minecraft_version=1.21
parchment_version=2024.07.28
parchment_version=2024.11.10

# Fabric https://fabricmc.net/develop
fabric_loader_version=0.16.5
fabric_loader_version=0.16.9
fabric_loader_versions=>=0.15.0
fabric_api_version=0.102.0+1.21
fabric_api_versions=*
Expand All @@ -47,12 +48,12 @@ neoform_version=1.21-20240613.152323

# GitHub, Modrinth, CurseForge releases
# Plural properties expect CSV lists
github_repo_owner=TerminalMC
github_repo=SignCopy
github_repo=TerminalMC/SignCopy
modrinth_id=cK4nxndh
curseforge_id=1049884
# 'release', 'alpha' or 'beta'
release_type=release
curseforge_slug=sign-copy
# 'STABLE', 'BETA' or 'ALPHA'
release_type=STABLE
# Fabric
release_mod_loaders_fabric=fabric
release_game_versions_fabric=1.21,1.21.1
Expand All @@ -67,17 +68,13 @@ mixinextras_version=0.4.1

# Plugins
# Fabric Loom https://mvnrepository.com/artifact/net.fabricmc/fabric-loom
loom_version=1.7.4
loom_version=1.9.2
# ModDev https://plugins.gradle.org/plugin/net.neoforged.moddev
moddev_version=1.0.19
# Minotaur https://plugins.gradle.org/plugin/com.modrinth.minotaur
minotaur_version=2.8.7
# CurseForgeGradle https://plugins.gradle.org/plugin/net.darkhax.curseforgegradle
curseforgegradle_version=1.1.25
# github-release https://plugins.gradle.org/plugin/com.github.breadmoirai.github-release
githubrelease_version=2.5.2
moddev_version=1.0.23
# Mod Publish Plugin https://plugins.gradle.org/plugin/me.modmuss50.mod-publish-plugin
mpp_version=0.8.1
# grgit-service https://github.com/ajoberstar/grgit/releases
grgitservice_version=5.2.2
grgitservice_version=5.3.0
# licenser https://plugins.gradle.org/plugin/org.cadixdev.licenser
licenser_version=0.6.1

Expand Down
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.11.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down

0 comments on commit e4f85e8

Please sign in to comment.