Remove ScriptCompileConfiguration as separate entity, refactor pieces accordingly

This commit is contained in:
Ilya Chernikov
2018-08-17 17:51:48 +02:00
parent bda8089004
commit acb0f6c6a9
18 changed files with 88 additions and 148 deletions
@@ -18,11 +18,9 @@ import kotlin.script.experimental.host.toScriptSource
import kotlin.script.experimental.jvm.JvmDependency
import kotlin.script.experimental.jvm.compat.mapToLegacyScriptReportPosition
import kotlin.script.experimental.jvm.compat.mapToLegacyScriptReportSeverity
import kotlin.script.experimental.util.getFirstFromChainOrNull
class BridgeDependenciesResolver(
val scriptDefinition: ScriptDefinition,
private val additionalConfiguration: ScriptCompileConfiguration?,
val onClasspathUpdated: (List<File>) -> Unit = {}
) : AsyncDependenciesResolver {
@@ -46,7 +44,7 @@ class BridgeDependenciesResolver(
if (refineFn == null) null
else {
val res = refineFn(
ScriptDataFacade(scriptContents.toScriptSource(), scriptDefinition, additionalConfiguration, processedScriptData)
ScriptDataFacade(scriptContents.toScriptSource(), scriptDefinition, processedScriptData)
)
when (res) {
is ResultWithDiagnostics.Failure ->
@@ -62,7 +60,7 @@ class BridgeDependenciesResolver(
?.flatMap { (it as JvmDependency).classpath } ?: emptyList()
if (newClasspath.isNotEmpty()) {
val oldClasspath =
getFirstFromChainOrNull(ScriptDefinition.dependencies, additionalConfiguration, scriptDefinition)
scriptDefinition[ScriptDefinition.dependencies]
?.flatMap { (it as JvmDependency).classpath } ?: emptyList()
if (newClasspath != oldClasspath) {
onClasspathUpdated(newClasspath)
@@ -71,9 +69,7 @@ class BridgeDependenciesResolver(
DependenciesResolver.ResolveResult.Success(
ScriptDependencies(
classpath = newClasspath, // TODO: maybe it should return only increment from the initial config
imports = getFirstFromChainOrNull(
ScriptDefinition.defaultImports, refinedConfiguration, additionalConfiguration, scriptDefinition
)?.toList() ?: emptyList()
imports = scriptDefinition[ScriptDefinition.defaultImports]?.toList() ?: emptyList()
),
diagnostics
)
@@ -7,26 +7,27 @@ package kotlin.script.experimental.jvm
import org.jetbrains.kotlin.script.util.scriptCompilationClasspathFromContext
import java.io.File
import kotlin.script.experimental.api.ScriptDefinition
import kotlin.script.experimental.api.ScriptDefinitionKeys
import kotlin.script.experimental.api.ScriptDependency
import kotlin.script.experimental.api.dependencies
import kotlin.script.experimental.api.*
import kotlin.script.experimental.util.PropertiesCollection
open class JvmScriptDefinition : PropertiesCollection.Builder()
val ScriptDefinitionKeys.jvm get() = JvmScriptDefinition()
class JvmDependency(val classpath: List<File>) : ScriptDependency {
data class JvmDependency(val classpath: List<File>) : ScriptDependency {
@Suppress("unused")
constructor(vararg classpathEntries: File) : this(classpathEntries.asList())
}
fun JvmScriptDefinition.dependenciesFromCurrentContext(vararg libraries: String, wholeClasspath: Boolean = false) {
interface JvmScriptDefinitionKeys
open class JvmScriptDefinitionBuilder : PropertiesCollection.Builder(), JvmScriptDefinitionKeys {
companion object : PropertiesCollection.Builder.BuilderExtension<JvmScriptDefinitionBuilder>, JvmScriptDefinitionKeys {
override fun get() = JvmScriptDefinitionBuilder()
}
}
fun JvmScriptDefinitionBuilder.dependenciesFromCurrentContext(vararg libraries: String, wholeClasspath: Boolean = false) {
dependenciesFromClassloader(*libraries, wholeClasspath = wholeClasspath)
}
fun JvmScriptDefinition.dependenciesFromClassloader(
fun JvmScriptDefinitionBuilder.dependenciesFromClassloader(
vararg libraries: String,
classLoader: ClassLoader = Thread.currentThread().contextClassLoader,
wholeClasspath: Boolean = false
@@ -35,3 +36,10 @@ fun JvmScriptDefinition.dependenciesFromClassloader(
JvmDependency(scriptCompilationClasspathFromContext(*libraries, classLoader = classLoader, wholeClasspath = wholeClasspath))
)
}
val JvmScriptDefinitionKeys.javaHome by PropertiesCollection.keyCopy(ScriptingEnvironment.jvm.javaHome)
@Suppress("unused")
val ScriptDefinitionKeys.jvm
get() = JvmScriptDefinitionBuilder