From 9c51f521a9695a94d99f398a935542242f12f5b8 Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Tue, 6 Nov 2018 18:55:10 +0300 Subject: [PATCH] Add embeddable version of the jvm scripting host #KT-27382 fixed --- .../jvm-embeddable-host/build.gradle.kts | 21 +++++++++ .../examples/jvm/embeddable/host/host.kt | 44 +++++++++++++++++++ .../jvm/embeddable/test/embeddableTest.kt | 26 +++++++++++ .../testData/useGuava.simplescript.kts | 11 +++++ .../jvm-host-embeddable/build.gradle.kts | 36 +++++++++++++++ settings.gradle | 4 ++ 6 files changed, 142 insertions(+) create mode 100644 libraries/examples/scripting/jvm-embeddable-host/build.gradle.kts create mode 100644 libraries/examples/scripting/jvm-embeddable-host/src/org/jetbrains/kotlin/script/examples/jvm/embeddable/host/host.kt create mode 100644 libraries/examples/scripting/jvm-embeddable-host/test/org/jetbrains/kotlin/script/examples/jvm/embeddable/test/embeddableTest.kt create mode 100644 libraries/examples/scripting/jvm-embeddable-host/testData/useGuava.simplescript.kts create mode 100644 libraries/scripting/jvm-host-embeddable/build.gradle.kts diff --git a/libraries/examples/scripting/jvm-embeddable-host/build.gradle.kts b/libraries/examples/scripting/jvm-embeddable-host/build.gradle.kts new file mode 100644 index 00000000000..b20ec776f7f --- /dev/null +++ b/libraries/examples/scripting/jvm-embeddable-host/build.gradle.kts @@ -0,0 +1,21 @@ + +plugins { + kotlin("jvm") +} + +dependencies { + compile(project(":examples:scripting-jvm-simple-script")) + compileOnly(project(":kotlin-scripting-jvm-host")) + compile(project(":kotlin-script-util")) + testRuntimeOnly(projectRuntimeJar(":kotlin-compiler-embeddable")) + testRuntimeOnly(project(":kotlin-scripting-jvm-host-embeddable")) + testRuntimeOnly(project(":kotlin-reflect")) + testRuntimeOnly(intellijDep()) { includeJars("guava", rootProject = rootProject) } + testCompile(commonDep("junit")) +} + +sourceSets { + "main" { projectDefault() } + "test" { projectDefault() } +} + diff --git a/libraries/examples/scripting/jvm-embeddable-host/src/org/jetbrains/kotlin/script/examples/jvm/embeddable/host/host.kt b/libraries/examples/scripting/jvm-embeddable-host/src/org/jetbrains/kotlin/script/examples/jvm/embeddable/host/host.kt new file mode 100644 index 00000000000..8393bfd16d5 --- /dev/null +++ b/libraries/examples/scripting/jvm-embeddable-host/src/org/jetbrains/kotlin/script/examples/jvm/embeddable/host/host.kt @@ -0,0 +1,44 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ +package org.jetbrains.kotlin.script.examples.jvm.embeddable.host + +import org.jetbrains.kotlin.script.examples.jvm.simple.SimpleScript +import java.io.File +import kotlin.script.experimental.api.EvaluationResult +import kotlin.script.experimental.api.ResultWithDiagnostics +import kotlin.script.experimental.host.toScriptSource +import kotlin.script.experimental.jvm.dependenciesFromCurrentContext +import kotlin.script.experimental.jvm.jvm +import kotlin.script.experimental.jvmhost.BasicJvmScriptingHost +import kotlin.script.experimental.jvmhost.createJvmCompilationConfigurationFromTemplate + +fun evalFile(scriptFile: File): ResultWithDiagnostics { + val compilationConfiguration = createJvmCompilationConfigurationFromTemplate { + jvm { + dependenciesFromCurrentContext( + "scripting-jvm-simple-script", /* script library jar name */ + "guava", + wholeClasspath = true + ) + } + } + + return BasicJvmScriptingHost().eval(scriptFile.toScriptSource(), compilationConfiguration, null) +} + +fun main(vararg args: String) { + if (args.size != 1) { + println("usage: