re-add mapping configuration caching
This commit is contained in:
parent
089535b8b1
commit
f3d17a60ca
|
@ -7,7 +7,7 @@ plugins {
|
||||||
}
|
}
|
||||||
|
|
||||||
group = "dev.frogmc"
|
group = "dev.frogmc"
|
||||||
version = "0.0.1-alpha.18"
|
version = "0.0.1-alpha.19+local"
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
maven {
|
maven {
|
||||||
|
|
|
@ -6,7 +6,10 @@ import com.google.gson.TypeAdapter
|
||||||
import com.google.gson.stream.JsonReader
|
import com.google.gson.stream.JsonReader
|
||||||
import com.google.gson.stream.JsonToken
|
import com.google.gson.stream.JsonToken
|
||||||
import com.google.gson.stream.JsonWriter
|
import com.google.gson.stream.JsonWriter
|
||||||
|
import dev.frogmc.thyroxine.api.data.DocumentationData
|
||||||
import dev.frogmc.thyroxine.api.data.MappingBundle
|
import dev.frogmc.thyroxine.api.data.MappingBundle
|
||||||
|
import dev.frogmc.thyroxine.api.data.MappingData
|
||||||
|
import dev.frogmc.thyroxine.api.data.Member
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
@ -23,6 +26,7 @@ object ProjectStorage {
|
||||||
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
|
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
|
||||||
.registerTypeAdapter(ProjectData::class.java, ProjectDataTypeAdapter())
|
.registerTypeAdapter(ProjectData::class.java, ProjectDataTypeAdapter())
|
||||||
.create()
|
.create()
|
||||||
|
private val timer = Timer()
|
||||||
|
|
||||||
fun get(project: Project): ProjectData {
|
fun get(project: Project): ProjectData {
|
||||||
val id = project.getId()
|
val id = project.getId()
|
||||||
|
@ -33,6 +37,11 @@ object ProjectStorage {
|
||||||
} else {
|
} else {
|
||||||
data[id] = ProjectData()
|
data[id] = ProjectData()
|
||||||
}
|
}
|
||||||
|
timer.schedule(object : TimerTask() {
|
||||||
|
override fun run() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}, 1000 * 60 * 5)
|
||||||
}
|
}
|
||||||
return data[id]!!
|
return data[id]!!
|
||||||
}
|
}
|
||||||
|
@ -42,7 +51,7 @@ object ProjectStorage {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun write(project: Project) {
|
fun write(project: Project) {
|
||||||
write(getCacheFile(project), data.remove(project.getId())!!)
|
write(getCacheFile(project), data[project.getId()]!!)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun write(path: Path, projectData: ProjectData) {
|
private fun write(path: Path, projectData: ProjectData) {
|
||||||
|
@ -79,6 +88,8 @@ class ProjectDataTypeAdapter : TypeAdapter<ProjectData>() {
|
||||||
out.name("local_cache_dir").value(value.localCacheDir?.absolutePathString())
|
out.name("local_cache_dir").value(value.localCacheDir?.absolutePathString())
|
||||||
out.name("minecraft_version").value(value.minecraftVersion)
|
out.name("minecraft_version").value(value.minecraftVersion)
|
||||||
out.name("remapped_game_jar_path").value(value.remappedGameJarPath?.absolutePathString())
|
out.name("remapped_game_jar_path").value(value.remappedGameJarPath?.absolutePathString())
|
||||||
|
out.name("mappings")
|
||||||
|
value.mappings?.let { MappingBundleTypeAdapter.write(out, it) } ?: out.nullValue()
|
||||||
out.name("mappings_name").value(value.mappingsName)
|
out.name("mappings_name").value(value.mappingsName)
|
||||||
out.name("target_namespace").value(value.targetNamespace)
|
out.name("target_namespace").value(value.targetNamespace)
|
||||||
out.endObject()
|
out.endObject()
|
||||||
|
@ -112,6 +123,8 @@ class ProjectDataTypeAdapter : TypeAdapter<ProjectData>() {
|
||||||
data.targetNamespace = value
|
data.targetNamespace = value
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (name == "mappings") {
|
||||||
|
data.mappings = MappingBundleTypeAdapter.read(r)
|
||||||
} else {
|
} else {
|
||||||
r.skipValue()
|
r.skipValue()
|
||||||
}
|
}
|
||||||
|
@ -120,3 +133,258 @@ class ProjectDataTypeAdapter : TypeAdapter<ProjectData>() {
|
||||||
return data
|
return data
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
object MappingBundleTypeAdapter : TypeAdapter<MappingBundle>() {
|
||||||
|
override fun write(out: JsonWriter, value: MappingBundle) {
|
||||||
|
out.beginObject()
|
||||||
|
out.name("data").beginArray()
|
||||||
|
value.data.forEach {
|
||||||
|
out.beginObject()
|
||||||
|
out.name("srcNs").value(it.srcNamespace)
|
||||||
|
out.name("dstNs").value(it.dstNamespace)
|
||||||
|
out.name("classes").beginObject()
|
||||||
|
it.classes.forEach { (k, v) ->
|
||||||
|
out.name(k).value(v)
|
||||||
|
}
|
||||||
|
out.endObject()
|
||||||
|
out.name("methods").beginArray()
|
||||||
|
it.methods.forEach { (k, v) ->
|
||||||
|
out.beginObject()
|
||||||
|
out.name("owner").value(k.owner)
|
||||||
|
out.name("desc").value(k.descriptor)
|
||||||
|
out.name("name").value(k.name)
|
||||||
|
out.name("value").value(v)
|
||||||
|
out.endObject()
|
||||||
|
}
|
||||||
|
out.endArray()
|
||||||
|
out.name("fields").beginArray()
|
||||||
|
it.fields.forEach { (k, v) ->
|
||||||
|
out.beginObject()
|
||||||
|
out.name("owner").value(k.owner)
|
||||||
|
out.name("desc").value(k.descriptor)
|
||||||
|
out.name("name").value(k.name)
|
||||||
|
out.name("value").value(v)
|
||||||
|
out.endObject()
|
||||||
|
}
|
||||||
|
out.endArray()
|
||||||
|
out.name("parameters").beginArray()
|
||||||
|
it.parameters.forEach { (k, v) ->
|
||||||
|
out.beginObject()
|
||||||
|
out.name("owner").value(k.owner)
|
||||||
|
out.name("desc").value(k.descriptor)
|
||||||
|
out.name("name").value(k.name)
|
||||||
|
out.name("value").beginObject()
|
||||||
|
v.forEach { (i, s) ->
|
||||||
|
out.name("$i").value(s)
|
||||||
|
}
|
||||||
|
out.endObject()
|
||||||
|
out.endObject()
|
||||||
|
}
|
||||||
|
out.endArray()
|
||||||
|
out.endObject()
|
||||||
|
}
|
||||||
|
out.endArray()
|
||||||
|
out.name("documentation").beginArray()
|
||||||
|
value.documentation.forEach {
|
||||||
|
out.beginObject()
|
||||||
|
out.name("ns").value(it.namespace)
|
||||||
|
out.name("classes").beginArray()
|
||||||
|
it.classes.forEach { c ->
|
||||||
|
out.beginObject()
|
||||||
|
out.name("name").value(c.name)
|
||||||
|
out.name("javadoc").beginArray()
|
||||||
|
c.javadoc.forEach { d ->
|
||||||
|
out.value(d)
|
||||||
|
}
|
||||||
|
out.endArray()
|
||||||
|
out.name("methods").beginArray()
|
||||||
|
c.methods.forEach { m ->
|
||||||
|
out.beginObject()
|
||||||
|
out.name("name").value(m.name)
|
||||||
|
out.name("desc").value(m.descriptor)
|
||||||
|
out.name("javadoc").beginArray()
|
||||||
|
m.javadoc.forEach { d ->
|
||||||
|
out.value(d)
|
||||||
|
}
|
||||||
|
out.endArray()
|
||||||
|
out.endObject()
|
||||||
|
}
|
||||||
|
out.endArray()
|
||||||
|
out.name("fields").beginArray()
|
||||||
|
c.fields.forEach { f ->
|
||||||
|
out.beginObject()
|
||||||
|
out.name("name").value(f.name)
|
||||||
|
out.name("desc").value(f.descriptor)
|
||||||
|
out.name("javadoc").beginArray()
|
||||||
|
f.javadoc.forEach { d ->
|
||||||
|
out.value(d)
|
||||||
|
}
|
||||||
|
out.endArray()
|
||||||
|
out.endObject()
|
||||||
|
}
|
||||||
|
out.endArray()
|
||||||
|
out.endObject()
|
||||||
|
}
|
||||||
|
out.endArray()
|
||||||
|
out.endObject()
|
||||||
|
}
|
||||||
|
out.endArray()
|
||||||
|
out.endObject()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun read(r: JsonReader): MappingBundle {
|
||||||
|
val out = MappingBundle()
|
||||||
|
r.beginObject()
|
||||||
|
r.nextName()
|
||||||
|
r.beginArray()
|
||||||
|
while (r.peek() != JsonToken.END_ARRAY) {
|
||||||
|
r.beginObject()
|
||||||
|
out.data.add(readData(r))
|
||||||
|
r.endObject()
|
||||||
|
}
|
||||||
|
r.endArray()
|
||||||
|
r.nextName()
|
||||||
|
r.beginArray()
|
||||||
|
while (r.peek() != JsonToken.END_ARRAY) {
|
||||||
|
r.beginObject()
|
||||||
|
r.nextName()
|
||||||
|
val namespace = r.nextString()
|
||||||
|
val data = DocumentationData(namespace)
|
||||||
|
out.documentation.add(data)
|
||||||
|
r.nextName()
|
||||||
|
r.beginArray()
|
||||||
|
while (r.peek() != JsonToken.END_ARRAY) {
|
||||||
|
r.beginObject()
|
||||||
|
r.nextName()
|
||||||
|
val name = r.nextString()
|
||||||
|
r.nextName()
|
||||||
|
val javadoc = mutableListOf<String>()
|
||||||
|
r.beginArray()
|
||||||
|
while (r.peek() != JsonToken.END_ARRAY) {
|
||||||
|
javadoc.add(r.nextString())
|
||||||
|
}
|
||||||
|
r.endArray()
|
||||||
|
r.nextName()
|
||||||
|
val methods = mutableListOf<DocumentationData.Method>()
|
||||||
|
r.beginArray()
|
||||||
|
while (r.peek() != JsonToken.END_ARRAY) {
|
||||||
|
r.beginObject()
|
||||||
|
r.nextName()
|
||||||
|
val methodName = r.nextString()
|
||||||
|
r.nextName()
|
||||||
|
val desc = r.nextString()
|
||||||
|
r.nextName()
|
||||||
|
val methodJavadoc = mutableListOf<String>()
|
||||||
|
r.beginArray()
|
||||||
|
while (r.peek() != JsonToken.END_ARRAY) {
|
||||||
|
methodJavadoc.add(r.nextString())
|
||||||
|
}
|
||||||
|
r.endArray()
|
||||||
|
methods.add(DocumentationData.Method(methodName, desc, methodJavadoc))
|
||||||
|
r.endObject()
|
||||||
|
}
|
||||||
|
r.endArray()
|
||||||
|
r.nextName()
|
||||||
|
val fields = mutableListOf<DocumentationData.Field>()
|
||||||
|
r.beginArray()
|
||||||
|
while (r.peek() != JsonToken.END_ARRAY) {
|
||||||
|
r.beginObject()
|
||||||
|
r.nextName()
|
||||||
|
val fieldName = r.nextString()
|
||||||
|
r.nextName()
|
||||||
|
val desc = r.nextString()
|
||||||
|
r.nextName()
|
||||||
|
val fieldJavadoc = mutableListOf<String>()
|
||||||
|
r.beginArray()
|
||||||
|
while (r.peek() != JsonToken.END_ARRAY) {
|
||||||
|
fieldJavadoc.add(r.nextString())
|
||||||
|
}
|
||||||
|
r.endArray()
|
||||||
|
fields.add(DocumentationData.Field(fieldName, desc, fieldJavadoc))
|
||||||
|
r.endObject()
|
||||||
|
}
|
||||||
|
r.endArray()
|
||||||
|
data.classes.add(DocumentationData.Class(name, javadoc, fields, methods))
|
||||||
|
r.endObject()
|
||||||
|
}
|
||||||
|
r.endArray()
|
||||||
|
r.endObject()
|
||||||
|
}
|
||||||
|
r.endArray()
|
||||||
|
r.endObject()
|
||||||
|
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun readData(r: JsonReader): MappingData {
|
||||||
|
r.nextName()
|
||||||
|
val srcNs = r.nextString()
|
||||||
|
r.nextName()
|
||||||
|
val dstNs = r.nextString()
|
||||||
|
r.nextName()
|
||||||
|
r.beginObject()
|
||||||
|
val classes = mutableMapOf<String, String>()
|
||||||
|
while (r.peek() != JsonToken.END_OBJECT) {
|
||||||
|
classes[r.nextName()] = r.nextString()
|
||||||
|
}
|
||||||
|
r.endObject()
|
||||||
|
r.nextName()
|
||||||
|
r.beginArray()
|
||||||
|
val methods = mutableMapOf<Member, String>()
|
||||||
|
while (r.peek() != JsonToken.END_ARRAY) {
|
||||||
|
r.beginObject()
|
||||||
|
r.nextName()
|
||||||
|
val owner = r.nextString()
|
||||||
|
r.nextName()
|
||||||
|
val desc = r.nextString()
|
||||||
|
r.nextName()
|
||||||
|
val name = r.nextString()
|
||||||
|
r.nextName()
|
||||||
|
val value = r.nextString()
|
||||||
|
methods[Member(owner, name, desc)] = value
|
||||||
|
r.endObject()
|
||||||
|
}
|
||||||
|
r.endArray()
|
||||||
|
r.nextName()
|
||||||
|
r.beginArray()
|
||||||
|
val fields = mutableMapOf<Member, String>()
|
||||||
|
while (r.peek() != JsonToken.END_ARRAY) {
|
||||||
|
r.beginObject()
|
||||||
|
r.nextName()
|
||||||
|
val owner = r.nextString()
|
||||||
|
r.nextName()
|
||||||
|
val desc = r.nextString()
|
||||||
|
r.nextName()
|
||||||
|
val name = r.nextString()
|
||||||
|
r.nextName()
|
||||||
|
val value = r.nextString()
|
||||||
|
fields[Member(owner, name, desc)] = value
|
||||||
|
r.endObject()
|
||||||
|
}
|
||||||
|
r.endArray()
|
||||||
|
r.nextName()
|
||||||
|
r.beginArray()
|
||||||
|
val parameters = mutableMapOf<Member, MutableMap<Int, String>>()
|
||||||
|
while (r.peek() != JsonToken.END_ARRAY) {
|
||||||
|
r.beginObject()
|
||||||
|
r.nextName()
|
||||||
|
val owner = r.nextString()
|
||||||
|
r.nextName()
|
||||||
|
val desc = r.nextString()
|
||||||
|
r.nextName()
|
||||||
|
val name = r.nextString()
|
||||||
|
r.nextName()
|
||||||
|
r.beginObject()
|
||||||
|
val values = mutableMapOf<Int, String>()
|
||||||
|
while (r.peek() != JsonToken.END_OBJECT) {
|
||||||
|
values[r.nextName().toInt()] = r.nextString()
|
||||||
|
}
|
||||||
|
r.endObject()
|
||||||
|
parameters[Member(owner, name, desc)] = values
|
||||||
|
r.endObject()
|
||||||
|
}
|
||||||
|
r.endArray()
|
||||||
|
return MappingData(srcNs, dstNs, classes, methods, fields, parameters)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -39,7 +39,6 @@ abstract class PhytotelmaGradleExtensionImpl @Inject constructor(
|
||||||
|
|
||||||
if (VersionChecker.validateVersion(project, version, offlineMode = project.gradle.startParameter.isOffline)) {
|
if (VersionChecker.validateVersion(project, version, offlineMode = project.gradle.startParameter.isOffline)) {
|
||||||
projectData.minecraftVersion = version
|
projectData.minecraftVersion = version
|
||||||
println(projectData.hashCode())
|
|
||||||
|
|
||||||
val mappings = mcConf.mappings.get()
|
val mappings = mcConf.mappings.get()
|
||||||
println("Using mappings: " + mcConf.mappingsName)
|
println("Using mappings: " + mcConf.mappingsName)
|
||||||
|
|
|
@ -19,7 +19,6 @@ object RunConfigGenerator {
|
||||||
val ADAPTERS = arrayOf(EclipseAdapter(), IdeaAdapter())
|
val ADAPTERS = arrayOf(EclipseAdapter(), IdeaAdapter())
|
||||||
|
|
||||||
fun generate(project: Project) {
|
fun generate(project: Project) {
|
||||||
println(ProjectStorage.get(project))
|
|
||||||
|
|
||||||
val assetPath = PhytotelmaPlugin.globalCacheDir.resolve("assets").absolute()
|
val assetPath = PhytotelmaPlugin.globalCacheDir.resolve("assets").absolute()
|
||||||
val assetIndexPath = assetPath.resolve("indexes")
|
val assetIndexPath = assetPath.resolve("indexes")
|
||||||
|
|
Loading…
Reference in a new issue