From 2c3a50e4b39744f16db0f9db7dd99505b76c45cf Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Fri, 23 Mar 2018 16:08:22 +0100 Subject: [PATCH] Refactor scripting examples: - split into script def and host part - remove bad dependencies - organize it in a way that should be typical for user scenarios --- .../scripting/jvm-maven-deps/build.gradle.kts | 1 - .../jvm-maven-deps/host/build.gradle.kts | 1 + .../examples/jvm/resolve/maven/host/host.kt | 48 ++++++++++ .../jvm/resolve/maven/test/resolveTest.kt | 2 +- .../testData/hello-maven-resolve-error.kts | 0 .../testData/hello-maven-resolve-junit.kts | 0 .../testData/hello-unresolved-junit.kts | 0 .../jvm-maven-deps/script/build.gradle.kts | 1 + ...es.jvm.resolve.maven.MyScriptWithMavenDeps | 0 .../examples/jvm/resolve/maven/scriptDef.kt} | 88 ++++++------------- .../examples/jvm/resolve/maven/scriptDef.kt | 19 ---- .../jvm-simple-script/build.gradle.kts | 1 - .../jvm-simple-script/host/build.gradle.kts | 1 + .../script/examples/jvm/simple/host}/host.kt | 21 ++--- .../examples/jvm/simple/test/simpleTest.kt | 2 +- .../{ => host}/testData/error.kts | 0 .../{ => host}/testData/hello.kts | 0 .../jvm-simple-script/script/build.gradle.kts | 1 + ...kotlin.script.examples.jvm.simple.MyScript | 0 .../script/examples/jvm/simple/scriptDef.kt | 0 libraries/scripting/jvm-host/build.gradle.kts | 1 + settings.gradle | 12 ++- 22 files changed, 97 insertions(+), 102 deletions(-) delete mode 100644 libraries/examples/scripting/jvm-maven-deps/build.gradle.kts create mode 100644 libraries/examples/scripting/jvm-maven-deps/host/build.gradle.kts create mode 100644 libraries/examples/scripting/jvm-maven-deps/host/src/org/jetbrains/kotlin/script/examples/jvm/resolve/maven/host/host.kt rename libraries/examples/scripting/jvm-maven-deps/{ => host}/test/org/jetbrains/kotlin/script/examples/jvm/resolve/maven/test/resolveTest.kt (96%) rename libraries/examples/scripting/jvm-maven-deps/{ => host}/testData/hello-maven-resolve-error.kts (100%) rename libraries/examples/scripting/jvm-maven-deps/{ => host}/testData/hello-maven-resolve-junit.kts (100%) rename libraries/examples/scripting/jvm-maven-deps/{ => host}/testData/hello-unresolved-junit.kts (100%) create mode 100644 libraries/examples/scripting/jvm-maven-deps/script/build.gradle.kts rename libraries/examples/scripting/jvm-maven-deps/{ => script}/resources/META-INF/kotlin/script/templates/org.jetbrains.kotlin.script.examples.jvm.resolve.maven.MyScriptWithMavenDeps (100%) rename libraries/examples/scripting/jvm-maven-deps/{src/org/jetbrains/kotlin/script/examples/jvm/resolve/maven/host.kt => script/src/org/jetbrains/kotlin/script/examples/jvm/resolve/maven/scriptDef.kt} (60%) delete mode 100644 libraries/examples/scripting/jvm-maven-deps/src/org/jetbrains/kotlin/script/examples/jvm/resolve/maven/scriptDef.kt delete mode 100644 libraries/examples/scripting/jvm-simple-script/build.gradle.kts create mode 100644 libraries/examples/scripting/jvm-simple-script/host/build.gradle.kts rename libraries/examples/scripting/jvm-simple-script/{src/org/jetbrains/kotlin/script/examples/jvm/simple => host/src/org/jetbrains/kotlin/script/examples/jvm/simple/host}/host.kt (70%) rename libraries/examples/scripting/jvm-simple-script/{ => host}/test/org/jetbrains/kotlin/script/examples/jvm/simple/test/simpleTest.kt (94%) rename libraries/examples/scripting/jvm-simple-script/{ => host}/testData/error.kts (100%) rename libraries/examples/scripting/jvm-simple-script/{ => host}/testData/hello.kts (100%) create mode 100644 libraries/examples/scripting/jvm-simple-script/script/build.gradle.kts create mode 100644 libraries/examples/scripting/jvm-simple-script/script/resources/META-INF/kotlin/script/templates/org.jetbrains.kotlin.script.examples.jvm.simple.MyScript rename libraries/examples/scripting/jvm-simple-script/{ => script}/src/org/jetbrains/kotlin/script/examples/jvm/simple/scriptDef.kt (100%) diff --git a/libraries/examples/scripting/jvm-maven-deps/build.gradle.kts b/libraries/examples/scripting/jvm-maven-deps/build.gradle.kts deleted file mode 100644 index a87d58dfd71..00000000000 --- a/libraries/examples/scripting/jvm-maven-deps/build.gradle.kts +++ /dev/null @@ -1 +0,0 @@ -import org.jetbrains.kotlin.gradle.dsl.Coroutines apply { plugin("kotlin") } dependencies { compile(project(":kotlin-script-runtime")) compile(project(":kotlin-scripting-jvm-host")) compile(project(":kotlin-script-util")) compile(projectDist(":kotlin-stdlib")) compile(projectDist(":kotlin-reflect")) compileOnly(project(":compiler:util")) runtime(projectDist(":kotlin-compiler")) testCompile(commonDep("junit")) testRuntime("com.jcabi:jcabi-aether:0.10.1") testRuntime("org.sonatype.aether:aether-api:1.13.1") testRuntime("org.apache.maven:maven-core:3.0.3") } sourceSets { "main" { projectDefault() } "test" { projectDefault() } } kotlin { experimental.coroutines = Coroutines.ENABLE } \ No newline at end of file diff --git a/libraries/examples/scripting/jvm-maven-deps/host/build.gradle.kts b/libraries/examples/scripting/jvm-maven-deps/host/build.gradle.kts new file mode 100644 index 00000000000..5db79930a46 --- /dev/null +++ b/libraries/examples/scripting/jvm-maven-deps/host/build.gradle.kts @@ -0,0 +1 @@ +import org.jetbrains.kotlin.gradle.dsl.Coroutines apply { plugin("kotlin") } dependencies { compile(project(":examples:scripting-jvm-maven-deps:script")) compile(project(":kotlin-scripting-jvm-host")) compile(projectDist(":kotlin-stdlib")) compile(projectDist(":kotlin-reflect")) compileOnly(project(":compiler:util")) runtime(projectDist(":kotlin-compiler")) testCompile(commonDep("junit")) } sourceSets { "main" { projectDefault() } "test" { projectDefault() } } kotlin { experimental.coroutines = Coroutines.ENABLE } \ No newline at end of file diff --git a/libraries/examples/scripting/jvm-maven-deps/host/src/org/jetbrains/kotlin/script/examples/jvm/resolve/maven/host/host.kt b/libraries/examples/scripting/jvm-maven-deps/host/src/org/jetbrains/kotlin/script/examples/jvm/resolve/maven/host/host.kt new file mode 100644 index 00000000000..3160e0e1861 --- /dev/null +++ b/libraries/examples/scripting/jvm-maven-deps/host/src/org/jetbrains/kotlin/script/examples/jvm/resolve/maven/host/host.kt @@ -0,0 +1,48 @@ +/* + * Copyright 2000-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.resolve.maven.host + +import org.jetbrains.kotlin.script.examples.jvm.resolve.maven.MyScriptWithMavenDeps +import org.jetbrains.kotlin.script.examples.jvm.resolve.maven.myJvmConfig +import java.io.File +import kotlin.script.experimental.api.EvaluationResult +import kotlin.script.experimental.api.ResultWithDiagnostics +import kotlin.script.experimental.api.ScriptEvaluationEnvironment +import kotlin.script.experimental.api.toConfigEntry +import kotlin.script.experimental.definitions.ScriptDefinitionFromAnnotatedBaseClass +import kotlin.script.experimental.host.toScriptSource +import kotlin.script.experimental.jvm.DummyCompiledJvmScriptCache +import kotlin.script.experimental.jvm.JvmBasicScriptingHost +import kotlin.script.experimental.jvm.JvmScriptCompiler +import kotlin.script.experimental.jvmhost.impl.KJVMCompilerImpl + +fun evalFile(scriptFile: File): ResultWithDiagnostics { + val scriptCompiler = JvmScriptCompiler(KJVMCompilerImpl(), DummyCompiledJvmScriptCache()) + val scriptDefinition = ScriptDefinitionFromAnnotatedBaseClass(MyScriptWithMavenDeps::class) + + val host = JvmBasicScriptingHost( + scriptDefinition.configurator, + scriptCompiler, + scriptDefinition.runner + ) + + return host.eval(myJvmConfig { add(scriptFile.toScriptSource().toConfigEntry()) }, ScriptEvaluationEnvironment()) +} + +fun main(vararg args: String) { + if (args.size != 1) { + println("usage: