From b32b98eb86c69e5e21f52c0e811e85e4be3d088d Mon Sep 17 00:00:00 2001 From: Gary Tierney Date: Sat, 16 Sep 2017 02:39:34 +0100 Subject: [PATCH] Share kotlin version config between buildSrc and project (#353) * Share kotlin version config between buildSrc and project * Use built-in Kotlin MessageCollector --- build.gradle | 4 +-- buildSrc/build.gradle | 4 +-- .../build/compile/KotlinScriptCompiler.kt | 35 +++++++------------ .../build/tasks/KotlinScriptCompileTask.kt | 10 ++++-- .../plugins/entity/spawn/src/spawn.plugin.kts | 2 +- properties.gradle | 3 ++ 6 files changed, 25 insertions(+), 33 deletions(-) create mode 100644 properties.gradle diff --git a/build.gradle b/build.gradle index f482903b..333ae83c 100644 --- a/build.gradle +++ b/build.gradle @@ -3,9 +3,7 @@ allprojects { version = '0.0.1' } -ext { - kotlinVersion = '1.1.2-4' -} +apply from: 'properties.gradle' subprojects { apply plugin: 'java' diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index b559f223..4a399fda 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -1,9 +1,7 @@ apply plugin: 'kotlin' buildscript { - ext { - kotlinVersion = '1.1.2-4' - } + apply from: '../properties.gradle' repositories { mavenCentral() diff --git a/buildSrc/src/main/kotlin/org/apollo/build/compile/KotlinScriptCompiler.kt b/buildSrc/src/main/kotlin/org/apollo/build/compile/KotlinScriptCompiler.kt index 9384f16e..eaebdeb8 100644 --- a/buildSrc/src/main/kotlin/org/apollo/build/compile/KotlinScriptCompiler.kt +++ b/buildSrc/src/main/kotlin/org/apollo/build/compile/KotlinScriptCompiler.kt @@ -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 diff --git a/buildSrc/src/main/kotlin/org/apollo/build/tasks/KotlinScriptCompileTask.kt b/buildSrc/src/main/kotlin/org/apollo/build/tasks/KotlinScriptCompileTask.kt index 373e6478..2e7cc5ed 100644 --- a/buildSrc/src/main/kotlin/org/apollo/build/tasks/KotlinScriptCompileTask.kt +++ b/buildSrc/src/main/kotlin/org/apollo/build/tasks/KotlinScriptCompileTask.kt @@ -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) diff --git a/game/src/plugins/entity/spawn/src/spawn.plugin.kts b/game/src/plugins/entity/spawn/src/spawn.plugin.kts index cb65aace..37625df2 100644 --- a/game/src/plugins/entity/spawn/src/spawn.plugin.kts +++ b/game/src/plugins/entity/spawn/src/spawn.plugin.kts @@ -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}") } diff --git a/properties.gradle b/properties.gradle new file mode 100644 index 00000000..e19e24a2 --- /dev/null +++ b/properties.gradle @@ -0,0 +1,3 @@ +ext { + kotlinVersion = '1.1.4-3' +} \ No newline at end of file