Working workspace builder

This commit is contained in:
Alexander Nozik 2019-02-10 09:49:16 +03:00
parent c06244465c
commit 48c45fa51c
2 changed files with 16 additions and 8 deletions

View File

@ -32,7 +32,7 @@ allprojects {
} }
group = "hep.dataforge" group = "hep.dataforge"
version = "0.1.1-dev-2" version = "0.1.1-dev-3"
extensions.findByType<KotlinMultiplatformExtension>()?.apply { extensions.findByType<KotlinMultiplatformExtension>()?.apply {
jvm { jvm {

View File

@ -1,5 +1,6 @@
package hep.dataforge.scripting package hep.dataforge.scripting
import hep.dataforge.context.Context
import hep.dataforge.context.Global import hep.dataforge.context.Global
import hep.dataforge.workspace.Workspace import hep.dataforge.workspace.Workspace
import hep.dataforge.workspace.WorkspaceBuilder import hep.dataforge.workspace.WorkspaceBuilder
@ -12,14 +13,14 @@ import kotlin.script.experimental.jvmhost.BasicJvmScriptingHost
object Builders { object Builders {
fun buildWorkspace(source: SourceCode): Workspace { fun buildWorkspace(source: SourceCode, context: Context = Global): Workspace {
val builder = WorkspaceBuilder(Global) val builder = WorkspaceBuilder(context)
val workspaceScriptConfiguration = ScriptCompilationConfiguration { val workspaceScriptConfiguration = ScriptCompilationConfiguration {
baseClass(Any::class) baseClass(Any::class)
implicitReceivers(WorkspaceBuilder::class) implicitReceivers(WorkspaceBuilder::class)
jvm{ jvm {
dependenciesFromCurrentContext() dependenciesFromCurrentContext(wholeClasspath = true)
} }
} }
@ -27,9 +28,16 @@ object Builders {
implicitReceivers(builder) implicitReceivers(builder)
} }
val res = BasicJvmScriptingHost().eval(source, workspaceScriptConfiguration, evaluationConfiguration) BasicJvmScriptingHost().eval(source, workspaceScriptConfiguration, evaluationConfiguration).onFailure {
res.reports.forEach{ scriptDiagnostic -> it.reports.forEach { scriptDiagnostic ->
scriptDiagnostic.exception?.let { throw it } when (scriptDiagnostic.severity) {
ScriptDiagnostic.Severity.FATAL, ScriptDiagnostic.Severity.ERROR ->
context.logger.error(scriptDiagnostic.exception) { scriptDiagnostic.toString() }
ScriptDiagnostic.Severity.WARNING -> context.logger.warn { scriptDiagnostic.toString() }
ScriptDiagnostic.Severity.INFO -> context.logger.info { scriptDiagnostic.toString() }
ScriptDiagnostic.Severity.DEBUG -> context.logger.debug { scriptDiagnostic.toString() }
}
}
} }
return builder.build() return builder.build()