aboutsummaryrefslogtreecommitdiff
path: root/buildSrc/src/AutoMixinDiscovery.kt
diff options
context:
space:
mode:
Diffstat (limited to 'buildSrc/src/AutoMixinDiscovery.kt')
-rw-r--r--buildSrc/src/AutoMixinDiscovery.kt50
1 files changed, 0 insertions, 50 deletions
diff --git a/buildSrc/src/AutoMixinDiscovery.kt b/buildSrc/src/AutoMixinDiscovery.kt
deleted file mode 100644
index f66229030..000000000
--- a/buildSrc/src/AutoMixinDiscovery.kt
+++ /dev/null
@@ -1,50 +0,0 @@
-import com.google.gson.GsonBuilder
-import com.google.gson.JsonArray
-import com.google.gson.JsonObject
-import com.google.gson.JsonPrimitive
-import org.apache.tools.ant.filters.BaseParamFilterReader
-import org.gradle.api.file.FileCopyDetails
-import org.gradle.api.tasks.SourceSet
-import java.io.File
-import java.io.Reader
-import java.io.StringReader
-
-class MixinFilterReader(reader: Reader) : BaseParamFilterReader() {
- lateinit var sourceRoots: Collection<File>
- val gson = GsonBuilder().setPrettyPrinting().create()
- val betterReader: StringReader by lazy {
- StringReader(run {
- val json = gson.fromJson(reader.readText(), JsonObject::class.java)
- val mixinPackage = (json["package"] as JsonPrimitive).asString
- val allMixins = (json["mixins"] as JsonArray?)?.map { it.asString }?.toMutableSet() ?: mutableSetOf()
- sourceRoots
- .forEach { base ->
- base.walk()
- .filter { it.isFile }
- .forEach {
- val relativeString = it.toRelativeString(base).replace("\\", "/")
- if (relativeString.startsWith(mixinPackage.replace(".", "/") + "/")
- && relativeString.endsWith(".java")
- && it.readText().contains("@Mixin")
- )
- allMixins.add(
- relativeString.replace("/", ".").dropLast(5).drop(mixinPackage.length + 1)
- )
- }
- }
- json.add("mixins", JsonArray().also { jsonAllMixins ->
- allMixins.forEach { jsonAllMixins.add(it) }
- })
- gson.toJson(json)
- })
-
- }
-
- override fun read(): Int {
- return betterReader.read()
- }
-}
-
-fun FileCopyDetails.autoDiscoverMixins(sourceSet: SourceSet) {
- filter(mapOf("sourceRoots" to sourceSet.allSource.srcDirs), MixinFilterReader::class.java)
-}