@@ -13,8 +13,12 @@ import dev.architectury.transformer.transformers.BuiltinProperties
1313import dev.architectury.transformer.transformers.base.ClassEditTransformer
1414import dev.architectury.transformer.util.Logger
1515import org.gradle.api.Project
16+ import org.gradle.api.file.DirectoryProperty
1617import org.gradle.api.file.RegularFileProperty
1718import org.gradle.api.provider.ListProperty
19+ import org.gradle.api.provider.MapProperty
20+ import org.gradle.api.provider.Property
21+ import org.gradle.api.tasks.Input
1822import org.gradle.api.tasks.InputFile
1923import org.gradle.api.tasks.Internal
2024import org.gradle.api.tasks.TaskAction
@@ -25,7 +29,6 @@ import java.nio.file.Path
2529import java.util.*
2630import java.util.function.BiConsumer
2731import kotlin.properties.Delegates
28- import kotlin.time.ExperimentalTime
2932
3033open class TransformingTask : Jar () {
3134 @InputFile
@@ -37,20 +40,38 @@ open class TransformingTask : Jar() {
3740 @Internal
3841 val postTransformers: ListProperty <ClassEditTransformer > = project.objects.listProperty(ClassEditTransformer ::class .java)
3942
43+ // TODO: Replace completely with a property
44+ var platform: String?
45+ @Internal
46+ get() = platformProperty.orNull
47+ set(value) = platformProperty.set(value)
48+
49+ @Input
50+ protected val platformProperty: Property <String > = project.objects.property(String ::class .java)
51+
52+ @Input
53+ val properties: MapProperty <String , String > = project.objects.mapProperty(String ::class .java, String ::class .java)
54+
4055 @Internal
41- var platform: String? = null
56+ val transformerLocation: DirectoryProperty = project.objects.directoryProperty()
57+
58+ init {
59+ properties.set(platformProperty.map { platform ->
60+ val extension = project.extensions.getByType(ArchitectPluginExtension ::class .java)
61+ extension.properties(platform)
62+ })
63+ transformerLocation.set(project.file(" .gradle" ))
64+ }
4265
43- @ExperimentalTime
4466 @TaskAction
4567 fun doTask () {
4668 val input: Path = this .input.asFile.get().toPath()
4769 val output: Path = this .archiveFile.get().asFile.toPath()
4870
49- val extension = project.extensions.getByType(ArchitectPluginExtension ::class .java)
50- extension.properties(platform ? : throw NullPointerException (" No Platform specified" )).forEach { (key, value) ->
71+ for ((key, value) in properties.get()) {
5172 System .setProperty(key, value)
5273 }
53- System .setProperty(BuiltinProperties .LOCATION , project.file( " .gradle " ) .absolutePath)
74+ System .setProperty(BuiltinProperties .LOCATION , transformerLocation.get().asFile .absolutePath)
5475 Logger .debug(" " )
5576 Logger .debug(" ============================" )
5677 Logger .debug(" Transforming from $input to $output " )
@@ -132,5 +153,3 @@ fun Project.projectUniqueIdentifier(): String {
132153 if (project.rootProject != project) name = project.rootProject.name + " _" + name
133154 return " architectury_inject_${name} _$id " .filter { Character .isJavaIdentifierPart(it) }
134155}
135-
136- class Epic : RuntimeException ()
0 commit comments