Sorting default jvm props and basic implementations
This commit is contained in:
+3
-3
@@ -56,7 +56,7 @@ import kotlin.script.experimental.dependencies.DependenciesResolver
|
|||||||
import kotlin.script.experimental.dependencies.ScriptDependencies
|
import kotlin.script.experimental.dependencies.ScriptDependencies
|
||||||
import kotlin.script.experimental.dependencies.asSuccess
|
import kotlin.script.experimental.dependencies.asSuccess
|
||||||
import kotlin.script.experimental.jvm.JvmDependency
|
import kotlin.script.experimental.jvm.JvmDependency
|
||||||
import kotlin.script.experimental.jvm.JvmGetScriptingClass
|
import kotlin.script.experimental.jvm.defaultJvmScriptingEnvironment
|
||||||
import kotlin.script.experimental.location.ScriptExpectedLocation
|
import kotlin.script.experimental.location.ScriptExpectedLocation
|
||||||
import kotlin.script.templates.standard.ScriptTemplateWithArgs
|
import kotlin.script.templates.standard.ScriptTemplateWithArgs
|
||||||
|
|
||||||
@@ -209,8 +209,8 @@ fun loadDefinitionsFromTemplates(
|
|||||||
}
|
}
|
||||||
template.annotations.firstIsInstanceOrNull<kotlin.script.experimental.annotations.KotlinScript>() != null -> {
|
template.annotations.firstIsInstanceOrNull<kotlin.script.experimental.annotations.KotlinScript>() != null -> {
|
||||||
val hostEnvironment = ScriptingEnvironment(
|
val hostEnvironment = ScriptingEnvironment(
|
||||||
ScriptingEnvironmentProperties.configurationDependencies to listOf(JvmDependency(classpath)),
|
defaultJvmScriptingEnvironment,
|
||||||
ScriptingEnvironmentProperties.getScriptingClass to JvmGetScriptingClass()
|
ScriptingEnvironmentProperties.configurationDependencies to listOf(JvmDependency(classpath))
|
||||||
)
|
)
|
||||||
KotlinScriptDefinitionAdapterFromNewAPI(
|
KotlinScriptDefinitionAdapterFromNewAPI(
|
||||||
createScriptDefinitionFromAnnotatedBaseClass(KotlinType(template), hostEnvironment, KotlinScriptDefinition::class),
|
createScriptDefinitionFromAnnotatedBaseClass(KotlinType(template), hostEnvironment, KotlinScriptDefinition::class),
|
||||||
|
|||||||
+4
-13
@@ -10,25 +10,16 @@ import java.io.File
|
|||||||
import kotlin.script.experimental.api.*
|
import kotlin.script.experimental.api.*
|
||||||
import kotlin.script.experimental.definitions.createScriptDefinitionFromAnnotatedBaseClass
|
import kotlin.script.experimental.definitions.createScriptDefinitionFromAnnotatedBaseClass
|
||||||
import kotlin.script.experimental.host.toScriptSource
|
import kotlin.script.experimental.host.toScriptSource
|
||||||
import kotlin.script.experimental.jvm.DummyCompiledJvmScriptCache
|
import kotlin.script.experimental.jvm.defaultJvmScriptingEnvironment
|
||||||
import kotlin.script.experimental.jvm.JvmBasicScriptingHost
|
import kotlin.script.experimental.jvmhost.BasicJvmScriptingHost
|
||||||
import kotlin.script.experimental.jvm.JvmGetScriptingClass
|
|
||||||
import kotlin.script.experimental.jvm.JvmScriptCompiler
|
|
||||||
import kotlin.script.experimental.jvm.runners.BasicJvmScriptEvaluator
|
|
||||||
import kotlin.script.experimental.jvmhost.impl.KJVMCompilerImpl
|
|
||||||
import kotlin.script.experimental.misc.invoke
|
|
||||||
|
|
||||||
fun evalFile(scriptFile: File): ResultWithDiagnostics<EvaluationResult> {
|
fun evalFile(scriptFile: File): ResultWithDiagnostics<EvaluationResult> {
|
||||||
val environment = ScriptingEnvironment(
|
|
||||||
ScriptingEnvironmentProperties.getScriptingClass(JvmGetScriptingClass())
|
|
||||||
)
|
|
||||||
val scriptCompiler = JvmScriptCompiler(KJVMCompilerImpl(environment), DummyCompiledJvmScriptCache())
|
|
||||||
val scriptDefinition = createScriptDefinitionFromAnnotatedBaseClass(
|
val scriptDefinition = createScriptDefinitionFromAnnotatedBaseClass(
|
||||||
KotlinType(MyScriptWithMavenDeps::class),
|
KotlinType(MyScriptWithMavenDeps::class),
|
||||||
environment
|
defaultJvmScriptingEnvironment
|
||||||
)
|
)
|
||||||
|
|
||||||
val host = JvmBasicScriptingHost(scriptCompiler, BasicJvmScriptEvaluator())
|
val host = BasicJvmScriptingHost()
|
||||||
|
|
||||||
return host.eval(
|
return host.eval(
|
||||||
scriptFile.toScriptSource(), scriptDefinition, ScriptCompileConfiguration(), ScriptEvaluationEnvironment()
|
scriptFile.toScriptSource(), scriptDefinition, ScriptCompileConfiguration(), ScriptEvaluationEnvironment()
|
||||||
|
|||||||
+4
-2
@@ -13,7 +13,10 @@ import kotlin.script.dependencies.ScriptContents
|
|||||||
import kotlin.script.dependencies.ScriptDependenciesResolver
|
import kotlin.script.dependencies.ScriptDependenciesResolver
|
||||||
import kotlin.script.experimental.annotations.KotlinScript
|
import kotlin.script.experimental.annotations.KotlinScript
|
||||||
import kotlin.script.experimental.api.*
|
import kotlin.script.experimental.api.*
|
||||||
import kotlin.script.experimental.jvm.*
|
import kotlin.script.experimental.jvm.JvmDependency
|
||||||
|
import kotlin.script.experimental.jvm.compat.mapLegacyDiagnosticSeverity
|
||||||
|
import kotlin.script.experimental.jvm.compat.mapLegacyScriptPosition
|
||||||
|
import kotlin.script.experimental.jvm.jvmDependenciesFromCurrentContext
|
||||||
import kotlin.script.experimental.misc.invoke
|
import kotlin.script.experimental.misc.invoke
|
||||||
|
|
||||||
@KotlinScript(
|
@KotlinScript(
|
||||||
@@ -26,7 +29,6 @@ abstract class MyScriptWithMavenDeps {
|
|||||||
|
|
||||||
object MyScriptProperties : ScriptingProperties() {
|
object MyScriptProperties : ScriptingProperties() {
|
||||||
override fun setup() {
|
override fun setup() {
|
||||||
include(jvmJavaHomeScriptingProperties)
|
|
||||||
scriptDefinition {
|
scriptDefinition {
|
||||||
defaultImports<DependsOn>()
|
defaultImports<DependsOn>()
|
||||||
defaultImports(Repository::class)
|
defaultImports(Repository::class)
|
||||||
|
|||||||
+11
-18
@@ -6,36 +6,29 @@
|
|||||||
package org.jetbrains.kotlin.script.examples.jvm.simple.host
|
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.MyScript
|
||||||
import org.jetbrains.kotlin.script.util.scriptCompilationClasspathFromContext
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import kotlin.script.experimental.api.*
|
import kotlin.script.experimental.api.*
|
||||||
import kotlin.script.experimental.definitions.createScriptDefinitionFromAnnotatedBaseClass
|
import kotlin.script.experimental.definitions.createScriptDefinitionFromAnnotatedBaseClass
|
||||||
import kotlin.script.experimental.host.toScriptSource
|
import kotlin.script.experimental.host.toScriptSource
|
||||||
import kotlin.script.experimental.jvm.*
|
import kotlin.script.experimental.jvm.defaultJvmScriptingEnvironment
|
||||||
import kotlin.script.experimental.jvm.runners.BasicJvmScriptEvaluator
|
import kotlin.script.experimental.jvm.jvmDependenciesFromCurrentContext
|
||||||
import kotlin.script.experimental.jvmhost.impl.KJVMCompilerImpl
|
import kotlin.script.experimental.jvmhost.BasicJvmScriptingHost
|
||||||
import kotlin.script.experimental.misc.invoke
|
|
||||||
|
|
||||||
val myJvmConfigParams = jvmJavaHomeParams + with(ScriptDefinitionProperties) {
|
|
||||||
listOf(
|
|
||||||
dependencies(JvmDependency(scriptCompilationClasspathFromContext("scripting-jvm-simple-script" /* script library jar name */)))
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun evalFile(scriptFile: File): ResultWithDiagnostics<EvaluationResult> {
|
fun evalFile(scriptFile: File): ResultWithDiagnostics<EvaluationResult> {
|
||||||
val environment = ScriptingEnvironment(
|
|
||||||
ScriptingEnvironmentProperties.getScriptingClass(JvmGetScriptingClass())
|
|
||||||
)
|
|
||||||
val scriptCompiler = JvmScriptCompiler(KJVMCompilerImpl(environment), DummyCompiledJvmScriptCache())
|
|
||||||
val scriptDefinition = createScriptDefinitionFromAnnotatedBaseClass(
|
val scriptDefinition = createScriptDefinitionFromAnnotatedBaseClass(
|
||||||
KotlinType(MyScript::class),
|
KotlinType(MyScript::class),
|
||||||
environment
|
defaultJvmScriptingEnvironment
|
||||||
)
|
)
|
||||||
|
val additionalCompilationProperties = buildScriptingProperties {
|
||||||
|
jvmDependenciesFromCurrentContext(
|
||||||
|
"scripting-jvm-simple-script" /* script library jar name */
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
val host = JvmBasicScriptingHost(scriptCompiler, BasicJvmScriptEvaluator())
|
val host = BasicJvmScriptingHost()
|
||||||
|
|
||||||
return host.eval(
|
return host.eval(
|
||||||
scriptFile.toScriptSource(), scriptDefinition, ScriptCompileConfiguration(myJvmConfigParams), ScriptEvaluationEnvironment()
|
scriptFile.toScriptSource(), scriptDefinition, additionalCompilationProperties, ScriptEvaluationEnvironment()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,8 @@ class PropertiesBuilderDelegate<T: PropertiesBuilder>(val kclass: KClass<T>) {
|
|||||||
|
|
||||||
inline fun <reified T : PropertiesBuilder> propertiesBuilder() = PropertiesBuilderDelegate(T::class)
|
inline fun <reified T : PropertiesBuilder> propertiesBuilder() = PropertiesBuilderDelegate(T::class)
|
||||||
|
|
||||||
|
fun buildScriptingProperties(body: ScriptingProperties.() -> Unit): ChainedPropertyBag =
|
||||||
|
ScriptingProperties(body).build()
|
||||||
|
|
||||||
open class ScriptingProperties(body: ScriptingProperties.() -> Unit = {}) {
|
open class ScriptingProperties(body: ScriptingProperties.() -> Unit = {}) {
|
||||||
|
|
||||||
@@ -31,12 +33,13 @@ open class ScriptingProperties(body: ScriptingProperties.() -> Unit = {}) {
|
|||||||
|
|
||||||
init {
|
init {
|
||||||
body()
|
body()
|
||||||
|
setup() // TODO: does it work?
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun setup() {}
|
open fun setup() {}
|
||||||
|
|
||||||
internal fun makePropertyBag(): ChainedPropertyBag =
|
fun build(): ChainedPropertyBag =
|
||||||
ChainedPropertyBag.createOptimized(parentPropertiesBag ?: parentPropertiesBuilder?.makePropertyBag(), data)
|
ChainedPropertyBag.createOptimized(parentPropertiesBag ?: parentPropertiesBuilder?.build(), data)
|
||||||
|
|
||||||
// --------------------------
|
// --------------------------
|
||||||
// DSL:
|
// DSL:
|
||||||
@@ -75,6 +78,7 @@ open class ScriptingProperties(body: ScriptingProperties.() -> Unit = {}) {
|
|||||||
// inclusion:
|
// inclusion:
|
||||||
|
|
||||||
fun include(props: ScriptingProperties) {
|
fun include(props: ScriptingProperties) {
|
||||||
|
props.setup()
|
||||||
data.putAll(props.data)
|
data.putAll(props.data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ open class ChainedPropertyBag internal constructor(private val parent: ChainedPr
|
|||||||
constructor(vararg pairs: Pair<TypedKey<*>, Any?>) : this(null, pairs.asIterable())
|
constructor(vararg pairs: Pair<TypedKey<*>, Any?>) : this(null, pairs.asIterable())
|
||||||
|
|
||||||
fun cloneWithNewParent(newParent: ChainedPropertyBag?): ChainedPropertyBag = when {
|
fun cloneWithNewParent(newParent: ChainedPropertyBag?): ChainedPropertyBag = when {
|
||||||
|
this == newParent -> this
|
||||||
newParent == null -> this
|
newParent == null -> this
|
||||||
parent == null -> createOptimized(newParent, data)
|
parent == null -> createOptimized(newParent, data)
|
||||||
else -> createOptimized(parent.cloneWithNewParent(newParent), data)
|
else -> createOptimized(parent.cloneWithNewParent(newParent), data)
|
||||||
|
|||||||
+14
@@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
* 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 kotlin.script.experimental.jvmhost
|
||||||
|
|
||||||
|
import kotlin.script.experimental.api.ScriptEvaluator
|
||||||
|
import kotlin.script.experimental.host.BasicScriptingHost
|
||||||
|
|
||||||
|
open class BasicJvmScriptingHost(
|
||||||
|
compiler: JvmScriptCompiler = JvmScriptCompiler(),
|
||||||
|
evaluator: ScriptEvaluator = BasicJvmScriptEvaluator()
|
||||||
|
) : BasicScriptingHost(compiler, evaluator)
|
||||||
+6
-6
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
* 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.
|
* that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
package kotlin.script.experimental.jvmhost.impl
|
package kotlin.script.experimental.jvmhost.impl
|
||||||
@@ -41,12 +41,12 @@ import kotlin.script.experimental.dependencies.DependenciesResolver
|
|||||||
import kotlin.script.experimental.host.getMergedScriptText
|
import kotlin.script.experimental.host.getMergedScriptText
|
||||||
import kotlin.script.experimental.jvm.JvmDependency
|
import kotlin.script.experimental.jvm.JvmDependency
|
||||||
import kotlin.script.experimental.jvm.JvmScriptCompileConfigurationProperties
|
import kotlin.script.experimental.jvm.JvmScriptCompileConfigurationProperties
|
||||||
import kotlin.script.experimental.jvm.JvmScriptEvaluationEnvironmentProperties
|
|
||||||
import kotlin.script.experimental.jvm.KJVMCompilerProxy
|
|
||||||
import kotlin.script.experimental.jvm.impl.BridgeDependenciesResolver
|
import kotlin.script.experimental.jvm.impl.BridgeDependenciesResolver
|
||||||
|
import kotlin.script.experimental.jvmhost.JvmScriptEvaluationEnvironmentProperties
|
||||||
|
import kotlin.script.experimental.jvmhost.KJvmCompilerProxy
|
||||||
import kotlin.script.experimental.util.chainPropertyBags
|
import kotlin.script.experimental.util.chainPropertyBags
|
||||||
|
|
||||||
class KJVMCompiledScript<out ScriptBase : Any>(
|
class KJvmCompiledScript<out ScriptBase : Any>(
|
||||||
override val configuration: ScriptCompileConfiguration,
|
override val configuration: ScriptCompileConfiguration,
|
||||||
val generationState: GenerationState,
|
val generationState: GenerationState,
|
||||||
val scriptClassFQName: String
|
val scriptClassFQName: String
|
||||||
@@ -70,7 +70,7 @@ class KJVMCompiledScript<out ScriptBase : Any>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class KJVMCompilerImpl(val hostEnvironment: ScriptingEnvironment) : KJVMCompilerProxy {
|
class KJvmCompilerImpl(val hostEnvironment: ScriptingEnvironment) : KJvmCompilerProxy {
|
||||||
|
|
||||||
override fun compile(
|
override fun compile(
|
||||||
script: ScriptSource,
|
script: ScriptSource,
|
||||||
@@ -192,7 +192,7 @@ class KJVMCompilerImpl(val hostEnvironment: ScriptingEnvironment) : KJVMCompiler
|
|||||||
org.jetbrains.kotlin.codegen.CompilationErrorHandler.THROW_EXCEPTION
|
org.jetbrains.kotlin.codegen.CompilationErrorHandler.THROW_EXCEPTION
|
||||||
)
|
)
|
||||||
|
|
||||||
val res = KJVMCompiledScript<Any>(updatedScriptCompileConfiguration, generationState, scriptFileName.capitalize())
|
val res = KJvmCompiledScript<Any>(updatedScriptCompileConfiguration, generationState, scriptFileName.capitalize())
|
||||||
|
|
||||||
return ResultWithDiagnostics.Success(res, messageCollector.diagnostics)
|
return ResultWithDiagnostics.Success(res, messageCollector.diagnostics)
|
||||||
} catch (ex: Throwable) {
|
} catch (ex: Throwable) {
|
||||||
|
|||||||
+18
-15
@@ -1,18 +1,31 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
* 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.
|
* that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@file:Suppress("unused")
|
@file:Suppress("unused")
|
||||||
|
|
||||||
package kotlin.script.experimental.jvm
|
package kotlin.script.experimental.jvmhost
|
||||||
|
|
||||||
import kotlin.script.experimental.api.*
|
import kotlin.script.experimental.api.*
|
||||||
|
import kotlin.script.experimental.jvm.defaultJvmScriptingEnvironment
|
||||||
|
import kotlin.script.experimental.jvmhost.impl.KJvmCompilerImpl
|
||||||
import kotlin.script.experimental.util.chainPropertyBags
|
import kotlin.script.experimental.util.chainPropertyBags
|
||||||
|
|
||||||
|
interface CompiledJvmScriptsCache {
|
||||||
|
fun get(script: ScriptSource, configuration: ScriptCompileConfiguration): CompiledScript<*>?
|
||||||
|
fun store(compiledScript: CompiledScript<*>, configuration: ScriptCompileConfiguration)
|
||||||
|
|
||||||
|
object NoCache : CompiledJvmScriptsCache {
|
||||||
|
override fun get(script: ScriptSource, configuration: ScriptCompileConfiguration): CompiledScript<*>? = null
|
||||||
|
override fun store(compiledScript: CompiledScript<*>, configuration: ScriptCompileConfiguration) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
open class JvmScriptCompiler(
|
open class JvmScriptCompiler(
|
||||||
val compilerProxy: KJVMCompilerProxy,
|
hostEnvironment: ScriptingEnvironment = defaultJvmScriptingEnvironment,
|
||||||
val cache: CompiledJvmScriptsCache
|
val compilerProxy: KJvmCompilerProxy = KJvmCompilerImpl(hostEnvironment.cloneWithNewParent(defaultJvmScriptingEnvironment)),
|
||||||
|
val cache: CompiledJvmScriptsCache = CompiledJvmScriptsCache.NoCache
|
||||||
) : ScriptCompiler {
|
) : ScriptCompiler {
|
||||||
|
|
||||||
override suspend operator fun invoke(
|
override suspend operator fun invoke(
|
||||||
@@ -48,12 +61,7 @@ open class JvmScriptCompiler(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
interface CompiledJvmScriptsCache {
|
interface KJvmCompilerProxy {
|
||||||
fun get(script: ScriptSource, configuration: ScriptCompileConfiguration): CompiledScript<*>?
|
|
||||||
fun store(compiledScript: CompiledScript<*>, configuration: ScriptCompileConfiguration)
|
|
||||||
}
|
|
||||||
|
|
||||||
interface KJVMCompilerProxy {
|
|
||||||
fun compile(
|
fun compile(
|
||||||
script: ScriptSource,
|
script: ScriptSource,
|
||||||
scriptDefinition: ScriptDefinition,
|
scriptDefinition: ScriptDefinition,
|
||||||
@@ -61,8 +69,3 @@ interface KJVMCompilerProxy {
|
|||||||
): ResultWithDiagnostics<CompiledScript<*>>
|
): ResultWithDiagnostics<CompiledScript<*>>
|
||||||
}
|
}
|
||||||
|
|
||||||
class DummyCompiledJvmScriptCache : CompiledJvmScriptsCache {
|
|
||||||
override fun get(script: ScriptSource, configuration: ScriptCompileConfiguration): CompiledScript<*>? = null
|
|
||||||
override fun store(compiledScript: CompiledScript<*>, configuration: ScriptCompileConfiguration) {}
|
|
||||||
}
|
|
||||||
|
|
||||||
+10
-3
@@ -1,13 +1,20 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
* 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.
|
* that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package kotlin.script.experimental.jvm.runners
|
@file:Suppress("unused")
|
||||||
|
|
||||||
|
package kotlin.script.experimental.jvmhost
|
||||||
|
|
||||||
import kotlin.script.experimental.api.*
|
import kotlin.script.experimental.api.*
|
||||||
|
import kotlin.script.experimental.util.typedKey
|
||||||
|
|
||||||
open class BasicJvmScriptEvaluator() : ScriptEvaluator {
|
object JvmScriptEvaluationEnvironmentProperties {
|
||||||
|
val baseClassLoader by typedKey<ClassLoader?>(Thread.currentThread().contextClassLoader)
|
||||||
|
}
|
||||||
|
|
||||||
|
open class BasicJvmScriptEvaluator : ScriptEvaluator {
|
||||||
|
|
||||||
override suspend operator fun invoke(
|
override suspend operator fun invoke(
|
||||||
compiledScript: CompiledScript<*>,
|
compiledScript: CompiledScript<*>,
|
||||||
+2
-3
@@ -1,11 +1,10 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
* 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.
|
* that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@file:Suppress("unused")
|
@file:Suppress("unused")
|
||||||
|
|
||||||
package kotlin.script.experimental.jvm
|
package kotlin.script.experimental.jvm.compat
|
||||||
|
|
||||||
import kotlin.script.dependencies.ScriptContents
|
import kotlin.script.dependencies.ScriptContents
|
||||||
import kotlin.script.dependencies.ScriptDependenciesResolver
|
import kotlin.script.dependencies.ScriptDependenciesResolver
|
||||||
+3
-3
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
* 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.
|
* that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -16,8 +16,8 @@ import kotlin.script.experimental.dependencies.ScriptDependencies
|
|||||||
import kotlin.script.experimental.dependencies.ScriptReport
|
import kotlin.script.experimental.dependencies.ScriptReport
|
||||||
import kotlin.script.experimental.host.toScriptSource
|
import kotlin.script.experimental.host.toScriptSource
|
||||||
import kotlin.script.experimental.jvm.JvmDependency
|
import kotlin.script.experimental.jvm.JvmDependency
|
||||||
import kotlin.script.experimental.jvm.mapToLegacyScriptReportPosition
|
import kotlin.script.experimental.jvm.compat.mapToLegacyScriptReportPosition
|
||||||
import kotlin.script.experimental.jvm.mapToLegacyScriptReportSeverity
|
import kotlin.script.experimental.jvm.compat.mapToLegacyScriptReportSeverity
|
||||||
|
|
||||||
class BridgeDependenciesResolver(
|
class BridgeDependenciesResolver(
|
||||||
val scriptDefinition: ScriptDefinition,
|
val scriptDefinition: ScriptDefinition,
|
||||||
|
|||||||
@@ -6,10 +6,16 @@
|
|||||||
package kotlin.script.experimental.jvm
|
package kotlin.script.experimental.jvm
|
||||||
|
|
||||||
import org.jetbrains.kotlin.script.util.scriptCompilationClasspathFromContext
|
import org.jetbrains.kotlin.script.util.scriptCompilationClasspathFromContext
|
||||||
|
import java.io.File
|
||||||
import kotlin.script.experimental.api.ScriptDefinitionProperties
|
import kotlin.script.experimental.api.ScriptDefinitionProperties
|
||||||
|
import kotlin.script.experimental.api.ScriptDependency
|
||||||
import kotlin.script.experimental.api.ScriptingProperties
|
import kotlin.script.experimental.api.ScriptingProperties
|
||||||
import kotlin.script.experimental.api.addToListProperty
|
import kotlin.script.experimental.api.addToListProperty
|
||||||
|
|
||||||
|
class JvmDependency(val classpath: List<File>) : ScriptDependency {
|
||||||
|
constructor(vararg classpathEntries: File) : this(classpathEntries.asList())
|
||||||
|
}
|
||||||
|
|
||||||
fun ScriptingProperties.jvmDependenciesFromCurrentContext(vararg libraries: String, wholeClasspath: Boolean = false) {
|
fun ScriptingProperties.jvmDependenciesFromCurrentContext(vararg libraries: String, wholeClasspath: Boolean = false) {
|
||||||
jvmDependenciesFromClassloader(*libraries, wholeClasspath = wholeClasspath)
|
jvmDependenciesFromClassloader(*libraries, wholeClasspath = wholeClasspath)
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-10
@@ -1,21 +1,19 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
* 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.
|
* that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@file:Suppress("unused")
|
||||||
|
|
||||||
package kotlin.script.experimental.jvm
|
package kotlin.script.experimental.jvm
|
||||||
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
import kotlin.script.experimental.api.PropertiesGroup
|
||||||
import kotlin.script.experimental.api.ScriptingProperties
|
import kotlin.script.experimental.api.ScriptingProperties
|
||||||
|
import kotlin.script.experimental.util.typedKey
|
||||||
|
|
||||||
val jvmJavaHomeParams = with(JvmScriptCompileConfigurationProperties) {
|
object JvmScriptCompileConfigurationProperties : PropertiesGroup {
|
||||||
listOf(javaHomeDir to File(System.getProperty("java.home")))
|
val javaHomeDir by typedKey<File>(File(System.getProperty("java.home")))
|
||||||
}
|
}
|
||||||
|
|
||||||
object JvmJavaHomeScriptingProperties : ScriptingProperties(
|
val ScriptingProperties.jvmCompileConfiguration get() = JvmScriptCompileConfigurationProperties
|
||||||
{
|
|
||||||
JvmScriptCompileConfigurationProperties.javaHomeDir(File(System.getProperty("java.home")))
|
|
||||||
})
|
|
||||||
|
|
||||||
val jvmJavaHomeScriptingProperties = JvmJavaHomeScriptingProperties
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,25 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
@file:Suppress("unused")
|
|
||||||
|
|
||||||
package kotlin.script.experimental.jvm
|
|
||||||
|
|
||||||
import java.io.File
|
|
||||||
import kotlin.script.experimental.api.PropertiesGroup
|
|
||||||
import kotlin.script.experimental.api.ScriptDependency
|
|
||||||
import kotlin.script.experimental.api.ScriptingProperties
|
|
||||||
import kotlin.script.experimental.util.typedKey
|
|
||||||
|
|
||||||
object JvmScriptCompileConfigurationProperties : PropertiesGroup {
|
|
||||||
val javaHomeDir by typedKey<File>()
|
|
||||||
}
|
|
||||||
|
|
||||||
val ScriptingProperties.jvmCompileConfiguration get() = JvmScriptCompileConfigurationProperties
|
|
||||||
|
|
||||||
class JvmDependency(val classpath: List<File>) : ScriptDependency {
|
|
||||||
constructor(vararg classpathEntries: File) : this(classpathEntries.asList())
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -9,6 +9,15 @@ import java.net.URLClassLoader
|
|||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
import kotlin.script.experimental.api.*
|
import kotlin.script.experimental.api.*
|
||||||
|
|
||||||
|
private object DefaultJvmScriptingEnvironmentPropertiesBuilder : ScriptingProperties() {
|
||||||
|
init {
|
||||||
|
ScriptingEnvironmentProperties.getScriptingClass(JvmGetScriptingClass())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val defaultJvmScriptingEnvironment = DefaultJvmScriptingEnvironmentPropertiesBuilder.build()
|
||||||
|
|
||||||
|
|
||||||
class JvmGetScriptingClass : GetScriptingClass {
|
class JvmGetScriptingClass : GetScriptingClass {
|
||||||
|
|
||||||
private var dependencies: List<ScriptDependency>? = null
|
private var dependencies: List<ScriptDependency>? = null
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
@file:Suppress("unused")
|
|
||||||
|
|
||||||
package kotlin.script.experimental.jvm
|
|
||||||
|
|
||||||
import kotlin.script.experimental.api.ScriptEvaluator
|
|
||||||
import kotlin.script.experimental.host.BasicScriptingHost
|
|
||||||
import kotlin.script.experimental.util.typedKey
|
|
||||||
|
|
||||||
open class JvmBasicScriptingHost(
|
|
||||||
compiler: JvmScriptCompiler,
|
|
||||||
evaluator: ScriptEvaluator
|
|
||||||
) : BasicScriptingHost(compiler, evaluator)
|
|
||||||
|
|
||||||
object JvmScriptEvaluationEnvironmentProperties {
|
|
||||||
val baseClassLoader by typedKey<ClassLoader?>()
|
|
||||||
}
|
|
||||||
+3
-3
@@ -18,7 +18,7 @@ import kotlin.script.experimental.annotations.KotlinScriptFileExtension
|
|||||||
import kotlin.script.experimental.api.*
|
import kotlin.script.experimental.api.*
|
||||||
import kotlin.script.experimental.definitions.createScriptDefinitionFromAnnotatedBaseClass
|
import kotlin.script.experimental.definitions.createScriptDefinitionFromAnnotatedBaseClass
|
||||||
import kotlin.script.experimental.jvm.JvmDependency
|
import kotlin.script.experimental.jvm.JvmDependency
|
||||||
import kotlin.script.experimental.jvm.JvmGetScriptingClass
|
import kotlin.script.experimental.jvm.defaultJvmScriptingEnvironment
|
||||||
|
|
||||||
class LazyScriptDefinitionFromDiscoveredClass internal constructor(
|
class LazyScriptDefinitionFromDiscoveredClass internal constructor(
|
||||||
private val annotationsFromAsm: ArrayList<BinAnnData>,
|
private val annotationsFromAsm: ArrayList<BinAnnData>,
|
||||||
@@ -36,8 +36,8 @@ class LazyScriptDefinitionFromDiscoveredClass internal constructor(
|
|||||||
|
|
||||||
override val hostEnvironment: ScriptingEnvironment by lazy(LazyThreadSafetyMode.PUBLICATION) {
|
override val hostEnvironment: ScriptingEnvironment by lazy(LazyThreadSafetyMode.PUBLICATION) {
|
||||||
ScriptingEnvironment(
|
ScriptingEnvironment(
|
||||||
ScriptingEnvironmentProperties.configurationDependencies to listOf(JvmDependency(classpath)),
|
defaultJvmScriptingEnvironment,
|
||||||
ScriptingEnvironmentProperties.getScriptingClass to JvmGetScriptingClass()
|
ScriptingEnvironmentProperties.configurationDependencies to listOf(JvmDependency(classpath))
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-6
@@ -18,10 +18,8 @@ import java.util.jar.JarFile
|
|||||||
import kotlin.coroutines.experimental.buildSequence
|
import kotlin.coroutines.experimental.buildSequence
|
||||||
import kotlin.script.experimental.annotations.KotlinScript
|
import kotlin.script.experimental.annotations.KotlinScript
|
||||||
import kotlin.script.experimental.api.KotlinType
|
import kotlin.script.experimental.api.KotlinType
|
||||||
import kotlin.script.experimental.api.ScriptingEnvironment
|
|
||||||
import kotlin.script.experimental.api.ScriptingEnvironmentProperties
|
|
||||||
import kotlin.script.experimental.definitions.createScriptDefinitionFromAnnotatedBaseClass
|
import kotlin.script.experimental.definitions.createScriptDefinitionFromAnnotatedBaseClass
|
||||||
import kotlin.script.experimental.jvm.JvmGetScriptingClass
|
import kotlin.script.experimental.jvm.defaultJvmScriptingEnvironment
|
||||||
import kotlin.script.templates.ScriptTemplateDefinition
|
import kotlin.script.templates.ScriptTemplateDefinition
|
||||||
|
|
||||||
internal const val SCRIPT_DEFINITION_MARKERS_PATH = "META-INF/kotlin/script/templates/"
|
internal const val SCRIPT_DEFINITION_MARKERS_PATH = "META-INF/kotlin/script/templates/"
|
||||||
@@ -274,9 +272,7 @@ private fun loadScriptDefinition(
|
|||||||
val cls = classLoader.loadClass(template)
|
val cls = classLoader.loadClass(template)
|
||||||
val def =
|
val def =
|
||||||
if (cls.annotations.firstIsInstanceOrNull<KotlinScript>() != null) {
|
if (cls.annotations.firstIsInstanceOrNull<KotlinScript>() != null) {
|
||||||
val environment = ScriptingEnvironment(
|
val environment = defaultJvmScriptingEnvironment
|
||||||
ScriptingEnvironmentProperties.getScriptingClass to JvmGetScriptingClass()
|
|
||||||
)
|
|
||||||
KotlinScriptDefinitionAdapterFromNewAPI(
|
KotlinScriptDefinitionAdapterFromNewAPI(
|
||||||
createScriptDefinitionFromAnnotatedBaseClass(
|
createScriptDefinitionFromAnnotatedBaseClass(
|
||||||
KotlinType(cls.kotlin),
|
KotlinType(cls.kotlin),
|
||||||
|
|||||||
Reference in New Issue
Block a user