Skip to content

Commit

Permalink
Deduplicate test resources
Browse files Browse the repository at this point in the history
  • Loading branch information
jpenilla committed Jul 26, 2024
1 parent 8228d37 commit 462f104
Show file tree
Hide file tree
Showing 27 changed files with 73 additions and 265 deletions.
2 changes: 2 additions & 0 deletions buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,6 @@ dependencies {
implementation(libs.build.indra.crossdoc)
implementation(libs.build.indra)
implementation(libs.build.indra.spotless)
implementation(libs.build.configurate.transformations)
implementation(libs.build.idea.ext)
}
55 changes: 55 additions & 0 deletions buildSrc/src/main/kotlin/extensions.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,61 @@
import ca.stellardrift.build.configurate.ConfigFormats
import ca.stellardrift.build.configurate.transformations.convertFormat
import org.gradle.accessors.dm.LibrariesForLibs
import org.gradle.api.Project
import org.gradle.api.Task
import org.gradle.api.tasks.SourceSet
import org.gradle.api.tasks.Sync
import org.gradle.api.tasks.TaskProvider
import org.gradle.kotlin.dsl.expand
import org.gradle.kotlin.dsl.getByType
import org.gradle.plugins.ide.eclipse.model.EclipseModel
import org.gradle.plugins.ide.idea.model.IdeaModel
import org.jetbrains.gradle.ext.settings
import org.jetbrains.gradle.ext.taskTriggers

val Project.libs: LibrariesForLibs
get() = extensions.getByType()

// Convert yaml files to josn
fun Project.createProcessResourceTemplates(name: String, set: SourceSet): TaskProvider<out Task> {
val generatedResourcesDir = layout.buildDirectory.dir("generated-resources").get().asFile
val destinationDir = generatedResourcesDir.resolve(name)
val task = tasks.register(name, Sync::class.java) {
this.destinationDir = destinationDir
from("src/${set.name}/resource-templates")

inputs.property("version", project.version)

// Convert data files yaml -> json
filesMatching(
sequenceOf(
"fabric.mod",
"data/**/*",
"assets/**/*"
).flatMap { base -> sequenceOf("$base.yml", "$base.yaml") }
.toList()
) {
convertFormat(ConfigFormats.YAML, ConfigFormats.JSON)
if (this.name.startsWith("fabric.mod")) {
expand("project" to project)
}
this.name = this.name.substringBeforeLast('.') + ".json"
}
// Convert pack meta, without changing extension
filesMatching("pack.mcmeta") { convertFormat(ConfigFormats.YAML, ConfigFormats.JSON) }
}

tasks.named(set.processResourcesTaskName) {
dependsOn(name)
}
set.resources.srcDir(task.map { it.outputs })

// Have templates ready for IDEs
extensions.getByType(EclipseModel::class).synchronizationTasks(task)
rootProject.extensions.getByType(IdeaModel::class).project.settings.taskTriggers {
afterSync(task)
}
extensions.getByType(IdeaModel::class).module.generatedSourceDirs.add(destinationDir)

return task
}
49 changes: 1 addition & 48 deletions fabric/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
import ca.stellardrift.build.configurate.ConfigFormats
import ca.stellardrift.build.configurate.transformations.convertFormat
import net.fabricmc.loom.api.RemapConfigurationSettings
import net.fabricmc.loom.task.GenerateSourcesTask
import net.fabricmc.loom.task.RemapJarTask
import org.gradle.configurationcache.extensions.capitalized
import org.jetbrains.gradle.ext.settings
import org.jetbrains.gradle.ext.taskTriggers

plugins {
alias(libs.plugins.loom)
Expand Down Expand Up @@ -180,6 +176,7 @@ dependencies {
// Create a remapped testmod jar
val testmodDevJar = tasks.register("testmodJar", Jar::class) {
from(testmod.output)
from(project(":test-resources").sourceSets.main.get().output)
archiveClassifier = "testmod-dev"
}

Expand All @@ -203,50 +200,6 @@ tasks {
}
}

// Convert yaml files to josn
val generatedResourcesDir = project.layout.buildDirectory.dir("generated-resources").get().asFile
fun createProcessResourceTemplates(name: String, set: SourceSet): TaskProvider<out Task> {
val destinationDir = generatedResourcesDir.resolve(name)
val task = tasks.register(name, Sync::class.java) {
this.destinationDir = destinationDir
from("src/${set.name}/resource-templates")

inputs.property("version", project.version)

// Convert data files yaml -> json
filesMatching(
sequenceOf(
"fabric.mod",
"data/**/*",
"assets/**/*"
).flatMap { base -> sequenceOf("$base.yml", "$base.yaml") }
.toList()
) {
convertFormat(ConfigFormats.YAML, ConfigFormats.JSON)
if (this.name.startsWith("fabric.mod")) {
expand("project" to project)
}
this.name = this.name.substringBeforeLast('.') + ".json"
}
// Convert pack meta, without changing extension
filesMatching("pack.mcmeta") { convertFormat(ConfigFormats.YAML, ConfigFormats.JSON) }
}

tasks.named(set.processResourcesTaskName) {
dependsOn(name)
}
set.resources.srcDir(task.map { it.outputs })

// Have templates ready for IDEs
eclipse.synchronizationTasks(task)
rootProject.idea.project.settings.taskTriggers {
afterSync(task)
}
idea.module.generatedSourceDirs.add(destinationDir)

return task
}

val generateTemplates = createProcessResourceTemplates("generateTemplates", sourceSets.main.get())
val generateTestmodTemplates = createProcessResourceTemplates("generateTestmodTemplates", testmod)

Expand Down
4 changes: 3 additions & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -72,12 +72,14 @@ vineflower = { module = "org.vineflower:vineflower", version.ref = "vineflower"
build-indra = { module = "net.kyori:indra-common", version.ref = "indra" }
build-indra-crossdoc = { module = "net.kyori:indra-crossdoc", version.ref = "indra" }
build-indra-spotless = { module = "net.kyori:indra-licenser-spotless", version.ref = "indra" }
build-configurate-transformations = { module = "ca.stellardrift:gradle-plugin-configurate", version = "6.1.0" }
build-idea-ext = { module = "gradle.plugin.org.jetbrains.gradle.plugin.idea-ext:gradle-idea-ext", version = "1.1.8" }

# For Renovate, do not use directly
zCheckstyle = { module = "com.puppycrawl.tools:checkstyle", version.ref = "checkstyle" }

[plugins]
configurateTransformations = "ca.stellardrift.configurate-transformations:6.1.0"
configurateTransformations = { id = "ca.stellardrift.configurate-transformations" }
eclipseApt = "com.diffplug.eclipse.apt:3.44.0"
loom = "fabric-loom:1.7.2"
# ModDevGradle settings plugin is putting another version on the classpath, so we can't specify a version :(
Expand Down
5 changes: 5 additions & 0 deletions mod-shared/test-resources/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
plugins {
alias(libs.plugins.configurateTransformations)
}

val generateTemplates = createProcessResourceTemplates("generateTemplates", sourceSets.main.get())
59 changes: 4 additions & 55 deletions neoforge/tester/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,14 +1,9 @@
import ca.stellardrift.build.configurate.ConfigFormats
import ca.stellardrift.build.configurate.transformations.convertFormat
import java.nio.file.Files
import net.neoforged.moddevgradle.internal.RunGameTask
import org.jetbrains.gradle.ext.settings
import org.jetbrains.gradle.ext.taskTriggers

plugins {
id("net.neoforged.moddev")
alias(libs.plugins.indra.checkstyle)
alias(libs.plugins.configurateTransformations)
}

neoForge {
Expand All @@ -34,6 +29,10 @@ neoForge {
}
}

tasks.jar {
from(project(":test-resources").sourceSets.main.get().output)
}

tasks.withType(RunGameTask::class.java).configureEach {
dependsOn(tasks.jar)
doFirst {
Expand All @@ -49,53 +48,3 @@ dependencies {
jarJar(project(":adventure-platform-neoforge"))
checkstyle(libs.stylecheck)
}

// Convert yaml files to josn
val generatedResourcesDir = project.layout.buildDirectory.dir("generated-resources").get().asFile
fun createProcessResourceTemplates(name: String, set: SourceSet): TaskProvider<out Task> {
val destinationDir = generatedResourcesDir.resolve(name)
val task = tasks.register(name, Sync::class.java) {
this.destinationDir = destinationDir
from("src/${set.name}/resource-templates")

inputs.property("version", project.version)

// Convert data files yaml -> json
filesMatching(
sequenceOf(
"fabric.mod",
"data/**/*",
"assets/**/*"
).flatMap { base -> sequenceOf("$base.yml", "$base.yaml") }
.toList()
) {
convertFormat(ConfigFormats.YAML, ConfigFormats.JSON)
if (this.name.startsWith("fabric.mod")) {
expand("project" to project)
}
this.name = this.name.substringBeforeLast('.') + ".json"
}
// Convert pack meta, without changing extension
filesMatching("pack.mcmeta") { convertFormat(ConfigFormats.YAML, ConfigFormats.JSON) }
}

tasks.named(set.processResourcesTaskName) {
dependsOn(name)
}
set.resources.srcDir(task.map { it.outputs })

// Have templates ready for IDEs
eclipse.synchronizationTasks(task)
rootProject.idea.project.settings.taskTriggers {
afterSync(task)
}
idea.module.generatedSourceDirs.add(destinationDir)

return task
}

val generateTemplates = createProcessResourceTemplates("generateTemplates", sourceSets.main.get())

tasks.named("createMinecraftArtifacts").configure {
dependsOn(generateTemplates)
}
130 changes: 0 additions & 130 deletions neoforge/tester/src/main/resource-templates/LICENSE_iosevka.txt

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Loading

0 comments on commit 462f104

Please sign in to comment.