Make definition a part of the basic hosts, simplify usages
This commit is contained in:
+7
-11
@@ -7,22 +7,18 @@ package org.jetbrains.kotlin.script.examples.jvm.resolve.maven.host
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.script.examples.jvm.resolve.maven.MyScriptWithMavenDeps
|
import org.jetbrains.kotlin.script.examples.jvm.resolve.maven.MyScriptWithMavenDeps
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import kotlin.script.experimental.api.*
|
import kotlin.script.experimental.api.EvaluationResult
|
||||||
import kotlin.script.experimental.definitions.createScriptDefinitionFromAnnotatedBaseClass
|
import kotlin.script.experimental.api.ResultWithDiagnostics
|
||||||
|
import kotlin.script.experimental.api.ScriptCompileConfiguration
|
||||||
|
import kotlin.script.experimental.api.ScriptEvaluationEnvironment
|
||||||
import kotlin.script.experimental.host.toScriptSource
|
import kotlin.script.experimental.host.toScriptSource
|
||||||
import kotlin.script.experimental.jvm.defaultJvmScriptingEnvironment
|
import kotlin.script.experimental.jvmhost.makeBasicHostFromAnnotatedScriptBaseClass
|
||||||
import kotlin.script.experimental.jvmhost.BasicJvmScriptingHost
|
|
||||||
|
|
||||||
fun evalFile(scriptFile: File): ResultWithDiagnostics<EvaluationResult> {
|
fun evalFile(scriptFile: File): ResultWithDiagnostics<EvaluationResult> {
|
||||||
val scriptDefinition = createScriptDefinitionFromAnnotatedBaseClass(
|
val host = makeBasicHostFromAnnotatedScriptBaseClass<MyScriptWithMavenDeps>()
|
||||||
KotlinType(MyScriptWithMavenDeps::class),
|
|
||||||
defaultJvmScriptingEnvironment
|
|
||||||
)
|
|
||||||
|
|
||||||
val host = BasicJvmScriptingHost()
|
|
||||||
|
|
||||||
return host.eval(
|
return host.eval(
|
||||||
scriptFile.toScriptSource(), scriptDefinition, ScriptCompileConfiguration(), ScriptEvaluationEnvironment()
|
scriptFile.toScriptSource(), ScriptCompileConfiguration(), ScriptEvaluationEnvironment()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+7
-10
@@ -7,28 +7,25 @@ package org.jetbrains.kotlin.script.examples.jvm.simple.host
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.script.examples.jvm.simple.MyScript
|
import org.jetbrains.kotlin.script.examples.jvm.simple.MyScript
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import kotlin.script.experimental.api.*
|
import kotlin.script.experimental.api.EvaluationResult
|
||||||
import kotlin.script.experimental.definitions.createScriptDefinitionFromAnnotatedBaseClass
|
import kotlin.script.experimental.api.ResultWithDiagnostics
|
||||||
|
import kotlin.script.experimental.api.ScriptEvaluationEnvironment
|
||||||
|
import kotlin.script.experimental.api.buildScriptingProperties
|
||||||
import kotlin.script.experimental.host.toScriptSource
|
import kotlin.script.experimental.host.toScriptSource
|
||||||
import kotlin.script.experimental.jvm.defaultJvmScriptingEnvironment
|
|
||||||
import kotlin.script.experimental.jvm.jvmDependenciesFromCurrentContext
|
import kotlin.script.experimental.jvm.jvmDependenciesFromCurrentContext
|
||||||
import kotlin.script.experimental.jvmhost.BasicJvmScriptingHost
|
import kotlin.script.experimental.jvmhost.makeBasicHostFromAnnotatedScriptBaseClass
|
||||||
|
|
||||||
fun evalFile(scriptFile: File): ResultWithDiagnostics<EvaluationResult> {
|
fun evalFile(scriptFile: File): ResultWithDiagnostics<EvaluationResult> {
|
||||||
val scriptDefinition = createScriptDefinitionFromAnnotatedBaseClass(
|
|
||||||
KotlinType(MyScript::class),
|
|
||||||
defaultJvmScriptingEnvironment
|
|
||||||
)
|
|
||||||
val additionalCompilationProperties = buildScriptingProperties {
|
val additionalCompilationProperties = buildScriptingProperties {
|
||||||
jvmDependenciesFromCurrentContext(
|
jvmDependenciesFromCurrentContext(
|
||||||
"scripting-jvm-simple-script" /* script library jar name */
|
"scripting-jvm-simple-script" /* script library jar name */
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
val host = BasicJvmScriptingHost()
|
val host = makeBasicHostFromAnnotatedScriptBaseClass<MyScript>()
|
||||||
|
|
||||||
return host.eval(
|
return host.eval(
|
||||||
scriptFile.toScriptSource(), scriptDefinition, additionalCompilationProperties, ScriptEvaluationEnvironment()
|
scriptFile.toScriptSource(), additionalCompilationProperties, ScriptEvaluationEnvironment()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -23,6 +23,7 @@ import kotlinx.coroutines.experimental.runBlocking
|
|||||||
import kotlin.script.experimental.api.*
|
import kotlin.script.experimental.api.*
|
||||||
|
|
||||||
abstract class BasicScriptingHost(
|
abstract class BasicScriptingHost(
|
||||||
|
val scriptDefinition: ScriptDefinition,
|
||||||
val compiler: ScriptCompiler,
|
val compiler: ScriptCompiler,
|
||||||
val evaluator: ScriptEvaluator
|
val evaluator: ScriptEvaluator
|
||||||
) {
|
) {
|
||||||
@@ -30,7 +31,6 @@ abstract class BasicScriptingHost(
|
|||||||
|
|
||||||
open fun eval(
|
open fun eval(
|
||||||
script: ScriptSource,
|
script: ScriptSource,
|
||||||
scriptDefinition: ScriptDefinition,
|
|
||||||
compileConfiguration: ScriptCompileConfiguration,
|
compileConfiguration: ScriptCompileConfiguration,
|
||||||
environment: ScriptEvaluationEnvironment
|
environment: ScriptEvaluationEnvironment
|
||||||
): ResultWithDiagnostics<EvaluationResult> =
|
): ResultWithDiagnostics<EvaluationResult> =
|
||||||
|
|||||||
+18
-2
@@ -5,10 +5,26 @@
|
|||||||
|
|
||||||
package kotlin.script.experimental.jvmhost
|
package kotlin.script.experimental.jvmhost
|
||||||
|
|
||||||
|
import kotlin.script.experimental.api.KotlinType
|
||||||
|
import kotlin.script.experimental.api.ScriptDefinition
|
||||||
import kotlin.script.experimental.api.ScriptEvaluator
|
import kotlin.script.experimental.api.ScriptEvaluator
|
||||||
|
import kotlin.script.experimental.api.ScriptingEnvironment
|
||||||
|
import kotlin.script.experimental.definitions.createScriptDefinitionFromAnnotatedBaseClass
|
||||||
import kotlin.script.experimental.host.BasicScriptingHost
|
import kotlin.script.experimental.host.BasicScriptingHost
|
||||||
|
import kotlin.script.experimental.jvm.defaultJvmScriptingEnvironment
|
||||||
|
|
||||||
open class BasicJvmScriptingHost(
|
open class BasicJvmScriptingHost(
|
||||||
compiler: JvmScriptCompiler = JvmScriptCompiler(),
|
scriptDefinition: ScriptDefinition,
|
||||||
|
hostEnvironment: ScriptingEnvironment = defaultJvmScriptingEnvironment,
|
||||||
|
compiler: JvmScriptCompiler = JvmScriptCompiler(hostEnvironment),
|
||||||
evaluator: ScriptEvaluator = BasicJvmScriptEvaluator()
|
evaluator: ScriptEvaluator = BasicJvmScriptEvaluator()
|
||||||
) : BasicScriptingHost(compiler, evaluator)
|
) : BasicScriptingHost(scriptDefinition, compiler, evaluator)
|
||||||
|
|
||||||
|
|
||||||
|
inline fun <reified T : Any> makeBasicHostFromAnnotatedScriptBaseClass(
|
||||||
|
hostEnvironment: ScriptingEnvironment = defaultJvmScriptingEnvironment
|
||||||
|
) =
|
||||||
|
BasicJvmScriptingHost(
|
||||||
|
createScriptDefinitionFromAnnotatedBaseClass(KotlinType(T::class), hostEnvironment),
|
||||||
|
hostEnvironment
|
||||||
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user