TransformingTask: Fix config cache/Gradle 10 compat

This commit is contained in:
Juuz
2025-08-19 15:50:28 +03:00
parent 75f2a021e3
commit f35e0360bf

View File

@@ -13,8 +13,12 @@ import dev.architectury.transformer.transformers.BuiltinProperties
import dev.architectury.transformer.transformers.base.ClassEditTransformer import dev.architectury.transformer.transformers.base.ClassEditTransformer
import dev.architectury.transformer.util.Logger import dev.architectury.transformer.util.Logger
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.file.RegularFileProperty import org.gradle.api.file.RegularFileProperty
import org.gradle.api.provider.ListProperty 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.InputFile
import org.gradle.api.tasks.Internal import org.gradle.api.tasks.Internal
import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.TaskAction
@@ -25,7 +29,6 @@ import java.nio.file.Path
import java.util.* import java.util.*
import java.util.function.BiConsumer import java.util.function.BiConsumer
import kotlin.properties.Delegates import kotlin.properties.Delegates
import kotlin.time.ExperimentalTime
open class TransformingTask : Jar() { open class TransformingTask : Jar() {
@InputFile @InputFile
@@ -37,20 +40,38 @@ open class TransformingTask : Jar() {
@Internal @Internal
val postTransformers: ListProperty<ClassEditTransformer> = project.objects.listProperty(ClassEditTransformer::class.java) val postTransformers: ListProperty<ClassEditTransformer> = project.objects.listProperty(ClassEditTransformer::class.java)
// TODO: Replace completely with a property
var platform: String?
@Internal @Internal
var platform: String? = null get() = platformProperty.orNull
set(value) = platformProperty.set(value)
@Input
protected val platformProperty: Property<String> = project.objects.property(String::class.java)
@Input
val properties: MapProperty<String, String> = 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 @TaskAction
fun doTask() { fun doTask() {
val input: Path = this.input.asFile.get().toPath() val input: Path = this.input.asFile.get().toPath()
val output: Path = this.archiveFile.get().asFile.toPath() val output: Path = this.archiveFile.get().asFile.toPath()
val extension = project.extensions.getByType(ArchitectPluginExtension::class.java) for ((key, value) in properties.get()) {
extension.properties(platform ?: throw NullPointerException("No Platform specified")).forEach { (key, value) ->
System.setProperty(key, value) 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("============================") Logger.debug("============================")
Logger.debug("Transforming from $input to $output") Logger.debug("Transforming from $input to $output")
@@ -132,5 +153,3 @@ fun Project.projectUniqueIdentifier(): String {
if (project.rootProject != project) name = project.rootProject.name + "_" + name if (project.rootProject != project) name = project.rootProject.name + "_" + name
return "architectury_inject_${name}_$id".filter { Character.isJavaIdentifierPart(it) } return "architectury_inject_${name}_$id".filter { Character.isJavaIdentifierPart(it) }
} }
class Epic : RuntimeException()