Implement context classpath extraction using particular class,...
Use it in the main-kts. Also improve diagnoistics related to the definition loading. #KT-26828 fixed (after this commit - finally, see also another related commit)
This commit is contained in:
+1
-1
@@ -60,7 +60,7 @@ fun createCompilationConfigurationFromTemplate(
|
||||
fun scriptConfigInstance(kclass: KClass<out ScriptCompilationConfiguration>): ScriptCompilationConfiguration = try {
|
||||
kclass.objectInstance ?: kclass.createInstance()
|
||||
} catch (e: Throwable) {
|
||||
throw IllegalArgumentException(ILLEGAL_CONFIG_ANN_ARG, e)
|
||||
throw IllegalArgumentException("$ILLEGAL_CONFIG_ANN_ARG: ${e.message}", e)
|
||||
}
|
||||
|
||||
return ScriptCompilationConfiguration(scriptConfigInstance(mainAnnotation.compilationConfiguration)) {
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
package kotlin.script.experimental.jvm
|
||||
|
||||
import java.io.File
|
||||
import kotlin.reflect.KClass
|
||||
import kotlin.script.experimental.api.*
|
||||
import kotlin.script.experimental.host.ScriptingHostConfiguration
|
||||
import kotlin.script.experimental.jvm.util.scriptCompilationClasspathFromContext
|
||||
@@ -22,6 +23,12 @@ open class JvmScriptCompilationConfigurationBuilder : PropertiesCollection.Build
|
||||
companion object : JvmScriptCompilationConfigurationKeys
|
||||
}
|
||||
|
||||
fun JvmScriptCompilationConfigurationBuilder.dependenciesFromClassContext(
|
||||
contextClass: KClass<*>, vararg libraries: String, wholeClasspath: Boolean = false
|
||||
) {
|
||||
dependenciesFromClassloader(*libraries, classLoader = contextClass.java.classLoader, wholeClasspath = wholeClasspath)
|
||||
}
|
||||
|
||||
fun JvmScriptCompilationConfigurationBuilder.dependenciesFromCurrentContext(vararg libraries: String, wholeClasspath: Boolean = false) {
|
||||
dependenciesFromClassloader(*libraries, wholeClasspath = wholeClasspath)
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ import kotlin.script.experimental.api.*
|
||||
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.dependenciesFromClassContext
|
||||
import kotlin.script.experimental.jvm.dependenciesFromCurrentContext
|
||||
import kotlin.script.experimental.jvm.jvm
|
||||
|
||||
@@ -27,9 +28,8 @@ object MainKtsScriptDefinition : ScriptCompilationConfiguration(
|
||||
{
|
||||
defaultImports(DependsOn::class, Repository::class)
|
||||
jvm {
|
||||
dependenciesFromCurrentContext("kotlin-main-kts")
|
||||
dependenciesFromClassContext(MainKtsScriptDefinition::class, "kotlin-main-kts")
|
||||
}
|
||||
// variant: dependencies(collectDependenciesFromCurrentContext(...
|
||||
refineConfiguration {
|
||||
onAnnotations(DependsOn::class, Repository::class, handler = MainKtsConfigurator())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user