From 5919d5f031778539a2d24711fecf9c99e75172de Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 2 Aug 2021 23:29:29 -0700 Subject: [PATCH] create "merged" platform --- platforms/merged/build.gradle.kts | 39 +++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 platforms/merged/build.gradle.kts diff --git a/platforms/merged/build.gradle.kts b/platforms/merged/build.gradle.kts new file mode 100644 index 000000000..278513d4a --- /dev/null +++ b/platforms/merged/build.gradle.kts @@ -0,0 +1,39 @@ +import java.lang.IllegalArgumentException + +val platformOverrides = mapOf( + "fabric" to "remapJar" +) + +dependencies { + "shadedApi"(project(":common:implementation")) +} + +val taskSet = HashSet() +val resourcesDir = File("${project.buildDir}/resources/main/") + +val dump = tasks.create("dumpDependents") { + doFirst { + taskSet.forEach { + val resource = File(resourcesDir, it.archiveFileName.get()) + println("Including archive " + it.archiveFileName.orNull + " in directory " + resource.absolutePath) + it.archiveFile.get().asFile.copyTo(resource, true) + } + } +} + +tasks["processResources"].dependsOn(dump) + +afterEvaluate { + project(":platforms").subprojects.forEach { + if(it == this@afterEvaluate) return@forEach + + val taskName = platformOverrides.getOrDefault(it.name, "jar") + val task = it.tasks.named(taskName).get() + if(task !is AbstractArchiveTask) { + throw IllegalArgumentException("Task dependency must be Archive Task: " + task.name) + } + tasks["dumpDependents"].dependsOn(task) + taskSet.add(task) + println("Merged JAR will incorporate task ${task.name} from platform ${it.name}.") + } +} \ No newline at end of file