Scripting examples refactoring

This commit is contained in:
Ilya Chernikov
2018-08-30 10:46:08 +03:00
parent f159a686df
commit d6590d4fa3
4 changed files with 10 additions and 18 deletions
@@ -5,7 +5,7 @@
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.ScriptWithMavenDeps
import java.io.File
import kotlin.script.experimental.api.EvaluationResult
import kotlin.script.experimental.api.ResultWithDiagnostics
@@ -15,7 +15,7 @@ import kotlin.script.experimental.jvmhost.createBasicScriptCompilationConfigurat
fun evalFile(scriptFile: File): ResultWithDiagnostics<EvaluationResult> {
val compilationConfiguration = createBasicScriptCompilationConfigurationFromAnnotatedBaseClass<MyScriptWithMavenDeps>()
val compilationConfiguration = createBasicScriptCompilationConfigurationFromAnnotatedBaseClass<ScriptWithMavenDeps>()
return BasicJvmScriptingHost().eval(scriptFile.toScriptSource(), compilationConfiguration, null)
}
@@ -21,13 +21,11 @@ import kotlin.script.experimental.jvm.jvm
@KotlinScript(
extension = "scriptwithdeps.kts",
compilationConfiguration = MyScriptCompilationConfiguration::class
compilationConfiguration = ScriptWithMavenDepsConfiguration::class
)
abstract class MyScriptWithMavenDeps {
// abstract fun body(vararg args: String): Int
}
abstract class ScriptWithMavenDeps
object MyScriptCompilationConfiguration : ScriptCompilationConfiguration(
object ScriptWithMavenDepsConfiguration : ScriptCompilationConfiguration(
{
defaultImports(DependsOn::class, Repository::class)
jvm {
@@ -36,19 +34,15 @@ object MyScriptCompilationConfiguration : ScriptCompilationConfiguration(
"kotlin-script-util" // DependsOn annotation is taken from script-util
)
}
// variant: dependencies(collectDependenciesFromCurrentContext(...
refineConfiguration {
// variant ^: dynamicConfiguration
onAnnotations(DependsOn::class, Repository::class, handler = ::myConfigureOnAnnotations)
// variants: onAnnotations, refineOnAnnotations (esp. for dynamicConfiguration), updateOnAnnotations
// other triggers: beforeParsing, onSections
onAnnotations(DependsOn::class, Repository::class, handler = ::configureMavenDepsOnAnnotations)
}
}
)
private val resolver = FilesAndMavenResolver()
fun myConfigureOnAnnotations(context: ScriptConfigurationRefinementContext): ResultWithDiagnostics<ScriptCompilationConfiguration> {
fun configureMavenDepsOnAnnotations(context: ScriptConfigurationRefinementContext): ResultWithDiagnostics<ScriptCompilationConfiguration> {
val annotations = context.collectedData?.get(ScriptCollectedData.foundAnnotations)?.takeIf { it.isNotEmpty() }
?: return context.compilationConfiguration.asSuccess()
val scriptContents = object : ScriptContents {
@@ -5,7 +5,7 @@
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.SimpleScript
import java.io.File
import kotlin.script.experimental.api.EvaluationResult
import kotlin.script.experimental.api.ResultWithDiagnostics
@@ -16,7 +16,7 @@ import kotlin.script.experimental.jvmhost.BasicJvmScriptingHost
import kotlin.script.experimental.jvmhost.createBasicScriptCompilationConfigurationFromAnnotatedBaseClass
fun evalFile(scriptFile: File): ResultWithDiagnostics<EvaluationResult> {
val compilationConfiguration = createBasicScriptCompilationConfigurationFromAnnotatedBaseClass<MyScript> {
val compilationConfiguration = createBasicScriptCompilationConfigurationFromAnnotatedBaseClass<SimpleScript> {
jvm {
dependenciesFromCurrentContext(
"scripting-jvm-simple-script" /* script library jar name */
@@ -8,6 +8,4 @@ package org.jetbrains.kotlin.script.examples.jvm.simple
import kotlin.script.experimental.annotations.KotlinScript
@KotlinScript(extension = "simplescript.kts")
abstract class MyScript {
// abstract fun body(vararg args: String): Int
}
abstract class SimpleScript