Remove ScriptCompileConfiguration as separate entity, refactor pieces accordingly
This commit is contained in:
+3
-7
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user