Implement simplified property bag dsl:
move it to the separate jar, use property bag chaining
This commit is contained in:
+2
-2
@@ -6,7 +6,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.myJvmConfig
|
||||
import org.jetbrains.kotlin.script.examples.jvm.resolve.maven.myJvmConfigParams
|
||||
import java.io.File
|
||||
import kotlin.script.experimental.api.*
|
||||
import kotlin.script.experimental.definitions.ScriptDefinitionFromAnnotatedBaseClass
|
||||
@@ -28,7 +28,7 @@ fun evalFile(scriptFile: File): ResultWithDiagnostics<EvaluationResult> {
|
||||
scriptDefinition.evaluator
|
||||
)
|
||||
|
||||
return host.eval(scriptFile.toScriptSource(), myJvmConfig(), ScriptEvaluationEnvironment())
|
||||
return host.eval(scriptFile.toScriptSource(), ChainedPropertyBag(null, myJvmConfigParams), ScriptEvaluationEnvironment())
|
||||
}
|
||||
|
||||
fun main(vararg args: String) {
|
||||
|
||||
@@ -1 +1 @@
|
||||
|
||||
|
||||
+17
-18
@@ -18,6 +18,7 @@ import kotlin.script.experimental.annotations.KotlinScriptEvaluator
|
||||
import kotlin.script.experimental.api.*
|
||||
import kotlin.script.experimental.jvm.*
|
||||
import kotlin.script.experimental.jvm.runners.BasicJvmScriptEvaluator
|
||||
import kotlin.script.experimental.misc.*
|
||||
|
||||
@KotlinScript
|
||||
@KotlinScriptCompilationConfigurator(MyConfigurator::class)
|
||||
@@ -26,32 +27,30 @@ abstract class MyScriptWithMavenDeps {
|
||||
// abstract fun body(vararg args: String): Int
|
||||
}
|
||||
|
||||
inline fun myJvmConfig(
|
||||
from: ChainedPropertyBag = ChainedPropertyBag(),
|
||||
crossinline body: JvmScriptCompileConfigurationParams.Builder.() -> Unit = {}
|
||||
) = jvmConfigWithJavaHome(from) {
|
||||
signature<MyScriptWithMavenDeps>()
|
||||
ScriptCompileConfigurationParams.importedPackages(listOf(DependsOn::class.qualifiedName!!, Repository::class.qualifiedName!!))
|
||||
dependencies(
|
||||
scriptCompilationClasspathFromContext(
|
||||
"script", // script library jar name
|
||||
"kotlin-script-util" // DependsOn annotation is taken from script-util
|
||||
)
|
||||
val myJvmConfigParams = jvmJavaHomeParams + with(ScriptCompileConfigurationParams) {
|
||||
listOf(
|
||||
scriptSignature to ScriptSignature(MyScriptWithMavenDeps::class, ProvidedDeclarations()),
|
||||
importedPackages(DependsOn::class.qualifiedName!!, Repository::class.qualifiedName!!),
|
||||
dependencies(
|
||||
JvmDependency(
|
||||
scriptCompilationClasspathFromContext(
|
||||
"script", // script library jar name
|
||||
"kotlin-script-util" // DependsOn annotation is taken from script-util
|
||||
)
|
||||
)
|
||||
),
|
||||
updateConfigurationOnAnnotations(DependsOn::class, Repository::class)
|
||||
)
|
||||
ScriptCompileConfigurationParams.updateConfigurationOnAnnotations(listOf(DependsOn::class, Repository::class))
|
||||
body()
|
||||
}
|
||||
|
||||
class MyConfigurator(val environment: ChainedPropertyBag) : ScriptCompilationConfigurator {
|
||||
|
||||
private val resolver = FilesAndMavenResolver()
|
||||
|
||||
override val defaultConfiguration = myJvmConfig {
|
||||
add(ScriptCompileConfigurationParams.baseClass to environment[ScriptingEnvironmentProperties.baseClass])
|
||||
}
|
||||
override val defaultConfiguration = ChainedPropertyBag(environment, myJvmConfigParams)
|
||||
|
||||
override suspend fun baseConfiguration(scriptSource: ScriptSource): ResultWithDiagnostics<ScriptCompileConfiguration> =
|
||||
myJvmConfig(defaultConfiguration) { add(scriptSource.toConfigEntry()) }.asSuccess()
|
||||
defaultConfiguration.asSuccess()
|
||||
|
||||
override suspend fun refineConfiguration(
|
||||
configuration: ScriptCompileConfiguration,
|
||||
@@ -76,7 +75,7 @@ class MyConfigurator(val environment: ChainedPropertyBag) : ScriptCompilationCon
|
||||
val newDependency = JvmDependency(resolvedClasspath)
|
||||
val updatedDeps =
|
||||
configuration.getOrNull(ScriptCompileConfigurationParams.dependencies)?.plus(newDependency) ?: listOf(newDependency)
|
||||
configuration.cloneWith(ScriptCompileConfigurationParams.dependencies to updatedDeps).asSuccess(diagnostics)
|
||||
ChainedPropertyBag(configuration, ScriptCompileConfigurationParams.dependencies(updatedDeps)).asSuccess(diagnostics)
|
||||
} catch (e: Throwable) {
|
||||
ResultWithDiagnostics.Failure(*diagnostics.toTypedArray(), e.asDiagnostics())
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
import org.jetbrains.kotlin.gradle.dsl.Coroutines
|
||||
import org.jetbrains.kotlin.gradle.dsl.Coroutines
|
||||
+7
-8
@@ -13,14 +13,13 @@ import kotlin.script.experimental.definitions.ScriptDefinitionFromAnnotatedBaseC
|
||||
import kotlin.script.experimental.host.toScriptSource
|
||||
import kotlin.script.experimental.jvm.*
|
||||
import kotlin.script.experimental.jvmhost.impl.KJVMCompilerImpl
|
||||
import kotlin.script.experimental.misc.*
|
||||
|
||||
inline fun myJvmConfig(
|
||||
from: ChainedPropertyBag = ChainedPropertyBag(),
|
||||
crossinline body: JvmScriptCompileConfigurationParams.Builder.() -> Unit = {}
|
||||
) = jvmConfigWithJavaHome(from) {
|
||||
signature<MyScript>()
|
||||
dependencies(scriptCompilationClasspathFromContext("script" /* script library jar name */))
|
||||
body()
|
||||
val myJvmConfigParams = jvmJavaHomeParams + with(ScriptCompileConfigurationParams) {
|
||||
listOf(
|
||||
scriptSignature to ScriptSignature(MyScript::class, ProvidedDeclarations()),
|
||||
dependencies(JvmDependency(scriptCompilationClasspathFromContext("script" /* script library jar name */)))
|
||||
)
|
||||
}
|
||||
|
||||
fun evalFile(scriptFile: File): ResultWithDiagnostics<EvaluationResult> {
|
||||
@@ -35,7 +34,7 @@ fun evalFile(scriptFile: File): ResultWithDiagnostics<EvaluationResult> {
|
||||
scriptDefinition.evaluator
|
||||
)
|
||||
|
||||
return host.eval(scriptFile.toScriptSource(), myJvmConfig(), ScriptEvaluationEnvironment())
|
||||
return host.eval(scriptFile.toScriptSource(), ChainedPropertyBag(null, myJvmConfigParams), ScriptEvaluationEnvironment())
|
||||
}
|
||||
|
||||
fun main(vararg args: String) {
|
||||
|
||||
Reference in New Issue
Block a user