mirror of
https://github.com/2006-Scape/apollo.git
synced 2026-07-02 16:49:12 +00:00
Add source information to remapped scripts
This commit is contained in:
+3
-4
@@ -41,17 +41,16 @@ class KotlinCompilerConfigurationFactory {
|
||||
classpath.addAll(bootClasspath.split(File.pathSeparatorChar.toString()).collect { new File(it) })
|
||||
}
|
||||
|
||||
def classpathFiles = classpath.findAll { it.exists() }
|
||||
def classLoader = new URLClassLoader(classpathFiles.collect { it.toURL() }.toArray(new URL[classpath.size()]))
|
||||
def classLoader = new URLClassLoader(classpath.collect { it.toURL() }.toArray(new URL[classpath.size()]))
|
||||
def configuration = new CompilerConfiguration()
|
||||
def scriptDefinitionClass = classLoader.loadClass(scriptDefinitionClassName)
|
||||
|
||||
def scriptDefinition = new KotlinScriptDefinitionFromAnnotatedTemplate(JvmClassMappingKt.getKotlinClass(scriptDefinitionClass),
|
||||
null, null, null, classpathFiles)
|
||||
null, null, null, classpath.collect())
|
||||
|
||||
configuration.add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, scriptDefinition)
|
||||
configuration.put(JVMConfigurationKeys.CONTENT_ROOTS, classpath.collect { new JvmClasspathRoot(it) })
|
||||
configuration.put(JVMConfigurationKeys.RETAIN_OUTPUT_IN_MEMORY, true)
|
||||
configuration.put(JVMConfigurationKeys.RETAIN_OUTPUT_IN_MEMORY, false)
|
||||
configuration.put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, messageCollector)
|
||||
configuration.copy()
|
||||
|
||||
|
||||
+11
-4
@@ -4,17 +4,23 @@ import org.objectweb.asm.ClassReader
|
||||
import org.objectweb.asm.ClassWriter
|
||||
import org.objectweb.asm.commons.Remapper
|
||||
import org.objectweb.asm.commons.RemappingClassAdapter
|
||||
import org.objectweb.asm.tree.ClassNode
|
||||
|
||||
class KotlinScriptBinaryArtifactRemapper {
|
||||
String mainClassName
|
||||
final String originalSourceFileName
|
||||
final String mainClassName
|
||||
|
||||
KotlinScriptBinaryArtifactRemapper(String mainClassName) {
|
||||
KotlinScriptBinaryArtifactRemapper(String originalSourceFileName, String mainClassName) {
|
||||
this.originalSourceFileName = originalSourceFileName
|
||||
this.mainClassName = mainClassName
|
||||
}
|
||||
|
||||
KotlinScriptBinaryArtifact remapToPackage(KotlinScriptBinaryArtifact artifact, String packageName) {
|
||||
def reader = new ClassReader(new ByteArrayInputStream(artifact.data))
|
||||
def node = new ClassNode()
|
||||
def writer = new ClassWriter(0)
|
||||
def reader = new ClassReader(new ByteArrayInputStream(artifact.data))
|
||||
reader.accept(node, ClassReader.EXPAND_FRAMES)
|
||||
|
||||
def normalizedPackageName = packageName.replace('.', '/')
|
||||
def oldClassName = reader.getClassName()
|
||||
def newClassName = artifact.relativePath.replace(oldClassName, "$normalizedPackageName/$oldClassName")
|
||||
@@ -31,7 +37,8 @@ class KotlinScriptBinaryArtifactRemapper {
|
||||
}
|
||||
|
||||
def remappingAdapter = new RemappingClassAdapter(writer, remapper)
|
||||
reader.accept(remappingAdapter, ClassReader.EXPAND_FRAMES)
|
||||
node.accept(remappingAdapter)
|
||||
writer.visitSource(originalSourceFileName, null)
|
||||
writer.visitEnd()
|
||||
|
||||
return new KotlinScriptBinaryArtifact(newClassName, writer.toByteArray())
|
||||
|
||||
+1
-1
@@ -48,7 +48,7 @@ class ApolloScriptCompileTask extends DefaultTask {
|
||||
removeBinariesFor(it.file)
|
||||
|
||||
def binary = compiler.compile(it.file.toPath())
|
||||
def binaryArtifactRemapper = new KotlinScriptBinaryArtifactRemapper(binary.mainClassName)
|
||||
def binaryArtifactRemapper = new KotlinScriptBinaryArtifactRemapper(it.file.name, binary.mainClassName)
|
||||
def artifacts = binary.artifacts.collect { binaryArtifactRemapper.remapToPackage(it, packageName) }
|
||||
|
||||
artifacts.each {
|
||||
|
||||
Reference in New Issue
Block a user