mirror of
https://github.com/2006-Scape/apollo.git
synced 2026-07-02 16:49:12 +00:00
Share kotlin version config between buildSrc and project (#353)
* Share kotlin version config between buildSrc and project * Use built-in Kotlin MessageCollector
This commit is contained in:
+1
-3
@@ -3,9 +3,7 @@ allprojects {
|
||||
version = '0.0.1'
|
||||
}
|
||||
|
||||
ext {
|
||||
kotlinVersion = '1.1.2-4'
|
||||
}
|
||||
apply from: 'properties.gradle'
|
||||
|
||||
subprojects {
|
||||
apply plugin: 'java'
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
apply plugin: 'kotlin'
|
||||
|
||||
buildscript {
|
||||
ext {
|
||||
kotlinVersion = '1.1.2-4'
|
||||
}
|
||||
apply from: '../properties.gradle'
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
|
||||
@@ -1,39 +1,28 @@
|
||||
package org.apollo.build.compile
|
||||
|
||||
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
||||
import org.jetbrains.kotlin.cli.common.messages.*
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.*
|
||||
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler
|
||||
import org.jetbrains.kotlin.cli.jvm.config.JvmClasspathRoot
|
||||
import org.jetbrains.kotlin.codegen.CompilationException
|
||||
import org.jetbrains.kotlin.com.intellij.openapi.util.Disposer
|
||||
import org.jetbrains.kotlin.config.*
|
||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||
import org.jetbrains.kotlin.config.addKotlinSourceRoot
|
||||
import org.jetbrains.kotlin.script.KotlinScriptDefinitionFromAnnotatedTemplate
|
||||
import java.io.File
|
||||
import java.lang.management.ManagementFactory
|
||||
import java.net.URISyntaxException
|
||||
import java.net.URLClassLoader
|
||||
import java.nio.file.*
|
||||
import java.nio.file.Files
|
||||
import java.nio.file.Path
|
||||
import java.nio.file.StandardOpenOption
|
||||
import java.util.*
|
||||
|
||||
|
||||
class KotlinMessageCollector : MessageCollector {
|
||||
|
||||
override fun clear() {
|
||||
}
|
||||
|
||||
override fun report(severity: CompilerMessageSeverity, message: String, location: CompilerMessageLocation) {
|
||||
if (severity.isError) {
|
||||
println("${location.path}:${location.line}-${location.column}: $message")
|
||||
println(">>> ${location.lineContent}")
|
||||
}
|
||||
}
|
||||
|
||||
override fun hasErrors(): Boolean {
|
||||
return false
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
data class KotlinCompilerResult(val fqName: String, val outputPath: Path)
|
||||
|
||||
class KotlinScriptCompiler {
|
||||
@@ -87,7 +76,7 @@ class KotlinScriptCompiler {
|
||||
configuration.add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, scriptDefinition)
|
||||
configuration.put(JVMConfigurationKeys.CONTENT_ROOTS, classpath.map { JvmClasspathRoot(it) })
|
||||
configuration.put(JVMConfigurationKeys.RETAIN_OUTPUT_IN_MEMORY, true)
|
||||
configuration.put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, KotlinMessageCollector())
|
||||
configuration.put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, messageCollector)
|
||||
configuration.copy()
|
||||
|
||||
return configuration
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
package org.apollo.build.tasks
|
||||
|
||||
import org.apollo.build.compile.KotlinMessageCollector
|
||||
import org.apollo.build.compile.KotlinScriptCompiler
|
||||
import org.gradle.api.DefaultTask
|
||||
import org.gradle.api.file.FileCollection
|
||||
import org.gradle.api.tasks.*
|
||||
import org.gradle.api.tasks.Input
|
||||
import org.gradle.api.tasks.OutputDirectory
|
||||
import org.gradle.api.tasks.TaskAction
|
||||
import org.gradle.api.tasks.incremental.IncrementalTaskInputs
|
||||
import org.jetbrains.kotlin.cli.common.messages.MessageRenderer
|
||||
import org.jetbrains.kotlin.cli.common.messages.PrintingMessageCollector
|
||||
import java.io.File
|
||||
|
||||
open class KotlinScriptCompileTask : DefaultTask() {
|
||||
@@ -29,7 +32,8 @@ open class KotlinScriptCompileTask : DefaultTask() {
|
||||
}
|
||||
|
||||
val classpath = compileClasspath!!.files
|
||||
val compiler = KotlinScriptCompiler(scriptDefinitionClass!!, classpath, KotlinMessageCollector())
|
||||
val messageCollector = PrintingMessageCollector(System.err, MessageRenderer.PLAIN_RELATIVE_PATHS, true);
|
||||
val compiler = KotlinScriptCompiler(scriptDefinitionClass!!, classpath, messageCollector)
|
||||
|
||||
inputs.outOfDate {
|
||||
removeBinariesFor(it.file)
|
||||
|
||||
@@ -3,7 +3,7 @@ import org.apollo.game.model.entity.Npc
|
||||
|
||||
start { world ->
|
||||
Spawns.list.forEach {
|
||||
val definition = if (it.id != null) NpcDefinition.lookup(it.id) else lookup_npc(it.name)
|
||||
val definition = if (it.id != null) NpcDefinition.lookup(it.id!!) else lookup_npc(it.name)
|
||||
if (definition == null) {
|
||||
throw IllegalArgumentException("Invalid NPC name or ID ${it.name}, ${it.id}")
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
ext {
|
||||
kotlinVersion = '1.1.4-3'
|
||||
}
|
||||
Reference in New Issue
Block a user