aboutsummaryrefslogtreecommitdiff
path: root/buildSrc/src/FixMixins.kt
diff options
context:
space:
mode:
Diffstat (limited to 'buildSrc/src/FixMixins.kt')
-rw-r--r--buildSrc/src/FixMixins.kt23
1 files changed, 15 insertions, 8 deletions
diff --git a/buildSrc/src/FixMixins.kt b/buildSrc/src/FixMixins.kt
index ea5f031..f662290 100644
--- a/buildSrc/src/FixMixins.kt
+++ b/buildSrc/src/FixMixins.kt
@@ -1,22 +1,23 @@
-import com.google.gson.Gson
+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: String
+ 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 json = gson.fromJson(reader.readText(), JsonObject::class.java)
val mixinPackage = (json["package"] as JsonPrimitive).asString
- val allMixins = JsonArray()
+ val allMixins = (json["mixins"] as JsonArray?)?.map { it.asString }?.toMutableSet() ?: mutableSetOf()
sourceRoots
- .split(":")
- .map { File(it) }
.forEach { base ->
base.walk()
.filter { it.isFile }
@@ -31,8 +32,10 @@ class MixinFilterReader(reader: Reader) : BaseParamFilterReader() {
)
}
}
- json.add("mixins", allMixins)
- Gson().toJson(json)
+ json.add("mixins", JsonArray().also { jsonAllMixins ->
+ allMixins.forEach { jsonAllMixins.add(it) }
+ })
+ gson.toJson(json)
})
}
@@ -41,3 +44,7 @@ class MixinFilterReader(reader: Reader) : BaseParamFilterReader() {
return betterReader.read()
}
}
+
+fun FileCopyDetails.autoDiscoverMixins(sourceSet: SourceSet) {
+ filter(mapOf("sourceRoots" to sourceSet.allSource.srcDirs), MixinFilterReader::class.java)
+}