Refactor host configuration handling and script definition creation
so it is possible now to create custom host configuration with template and all configurations are handled consistenly. Also introduce and use new ScriptDefinition class wrapping compilation and evaluation configurations, that could be consistenly created from a template.
This commit is contained in:
@@ -11,25 +11,24 @@ import kotlin.coroutines.EmptyCoroutineContext
|
||||
import kotlin.coroutines.startCoroutine
|
||||
import kotlin.script.experimental.api.*
|
||||
import kotlin.script.experimental.host.createEvaluationConfigurationFromTemplate
|
||||
import kotlin.script.experimental.host.withDefaultsFrom
|
||||
import kotlin.script.experimental.jvm.impl.createScriptFromClassLoader
|
||||
|
||||
@Suppress("unused") // script codegen generates a call to it
|
||||
fun runCompiledScript(scriptClass: Class<*>, vararg args: String) {
|
||||
val script = createScriptFromClassLoader(scriptClass.name, scriptClass.classLoader)
|
||||
val evaluator = BasicJvmScriptEvaluator()
|
||||
val hostConfiguration = script.compilationConfiguration[ScriptCompilationConfiguration.hostConfiguration]
|
||||
?: defaultJvmScriptingHostConfiguration
|
||||
val baseEvaluationConfiguration =
|
||||
val evaluationConfiguration =
|
||||
createEvaluationConfigurationFromTemplate(
|
||||
script.compilationConfiguration[ScriptCompilationConfiguration.baseClass]!!,
|
||||
hostConfiguration,
|
||||
script.compilationConfiguration[ScriptCompilationConfiguration.hostConfiguration]
|
||||
.withDefaultsFrom(defaultJvmScriptingHostConfiguration),
|
||||
scriptClass.kotlin
|
||||
)
|
||||
val evaluationConfiguration = ScriptEvaluationConfiguration(baseEvaluationConfiguration) {
|
||||
jvm {
|
||||
mainArguments(args)
|
||||
) {
|
||||
jvm {
|
||||
mainArguments(args)
|
||||
}
|
||||
}
|
||||
}
|
||||
runScriptSuspend {
|
||||
evaluator(script, evaluationConfiguration).onFailure {
|
||||
it.reports.forEach(System.err::println)
|
||||
|
||||
Reference in New Issue
Block a user