From f35e0360bf7465f8f477a3b1c29cae8cadb878d6 Mon Sep 17 00:00:00 2001 From: Juuz <6596629+Juuxel@users.noreply.github.com> Date: Tue, 19 Aug 2025 15:50:28 +0300 Subject: [PATCH] TransformingTask: Fix config cache/Gradle 10 compat --- .../architectury/plugin/TransformingTask.kt | 37 ++++++++++++++----- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/src/main/kotlin/dev/architectury/plugin/TransformingTask.kt b/src/main/kotlin/dev/architectury/plugin/TransformingTask.kt index b8c400c..f0b2468 100644 --- a/src/main/kotlin/dev/architectury/plugin/TransformingTask.kt +++ b/src/main/kotlin/dev/architectury/plugin/TransformingTask.kt @@ -13,8 +13,12 @@ import dev.architectury.transformer.transformers.BuiltinProperties import dev.architectury.transformer.transformers.base.ClassEditTransformer import dev.architectury.transformer.util.Logger import org.gradle.api.Project +import org.gradle.api.file.DirectoryProperty import org.gradle.api.file.RegularFileProperty import org.gradle.api.provider.ListProperty +import org.gradle.api.provider.MapProperty +import org.gradle.api.provider.Property +import org.gradle.api.tasks.Input import org.gradle.api.tasks.InputFile import org.gradle.api.tasks.Internal import org.gradle.api.tasks.TaskAction @@ -25,7 +29,6 @@ import java.nio.file.Path import java.util.* import java.util.function.BiConsumer import kotlin.properties.Delegates -import kotlin.time.ExperimentalTime open class TransformingTask : Jar() { @InputFile @@ -37,20 +40,38 @@ open class TransformingTask : Jar() { @Internal val postTransformers: ListProperty = project.objects.listProperty(ClassEditTransformer::class.java) - @Internal - var platform: String? = null + // TODO: Replace completely with a property + var platform: String? + @Internal + get() = platformProperty.orNull + set(value) = platformProperty.set(value) + + @Input + protected val platformProperty: Property = project.objects.property(String::class.java) + + @Input + val properties: MapProperty = project.objects.mapProperty(String::class.java, String::class.java) + + @Internal + val transformerLocation: DirectoryProperty = project.objects.directoryProperty() + + init { + properties.set(platformProperty.map { platform -> + val extension = project.extensions.getByType(ArchitectPluginExtension::class.java) + extension.properties(platform) + }) + transformerLocation.set(project.file(".gradle")) + } - @ExperimentalTime @TaskAction fun doTask() { val input: Path = this.input.asFile.get().toPath() val output: Path = this.archiveFile.get().asFile.toPath() - val extension = project.extensions.getByType(ArchitectPluginExtension::class.java) - extension.properties(platform ?: throw NullPointerException("No Platform specified")).forEach { (key, value) -> + for ((key, value) in properties.get()) { System.setProperty(key, value) } - System.setProperty(BuiltinProperties.LOCATION, project.file(".gradle").absolutePath) + System.setProperty(BuiltinProperties.LOCATION, transformerLocation.get().asFile.absolutePath) Logger.debug("") Logger.debug("============================") Logger.debug("Transforming from $input to $output") @@ -132,5 +153,3 @@ fun Project.projectUniqueIdentifier(): String { if (project.rootProject != project) name = project.rootProject.name + "_" + name return "architectury_inject_${name}_$id".filter { Character.isJavaIdentifierPart(it) } } - -class Epic : RuntimeException()