Add ide script settings for sources and accepted location
This commit is contained in:
+39
@@ -0,0 +1,39 @@
|
|||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
@file:Suppress("unused")
|
||||||
|
|
||||||
|
package kotlin.script.experimental.api
|
||||||
|
|
||||||
|
import kotlin.script.experimental.util.PropertiesCollection
|
||||||
|
|
||||||
|
interface IdeScriptCompilationConfigurationKeys
|
||||||
|
|
||||||
|
open class IdeScriptCompilationConfigurationBuilder : PropertiesCollection.Builder(),
|
||||||
|
IdeScriptCompilationConfigurationKeys {
|
||||||
|
companion object : IdeScriptCompilationConfigurationKeys
|
||||||
|
}
|
||||||
|
|
||||||
|
enum class ScriptAcceptedLocation {
|
||||||
|
Sources, // Under sources roots
|
||||||
|
Tests, // Under test sources roots
|
||||||
|
Libraries, // Under libraries classes or sources
|
||||||
|
Project, // Under project folder, including sources and test sources roots
|
||||||
|
Everywhere;
|
||||||
|
}
|
||||||
|
|
||||||
|
val ScriptCompilationConfigurationKeys.ide
|
||||||
|
get() = IdeScriptCompilationConfigurationBuilder()
|
||||||
|
|
||||||
|
val IdeScriptCompilationConfigurationKeys.dependenciesSources by PropertiesCollection.key<List<ScriptDependency>>()
|
||||||
|
|
||||||
|
@Suppress("RemoveExplicitTypeArguments")
|
||||||
|
val IdeScriptCompilationConfigurationKeys.acceptedLocations
|
||||||
|
by PropertiesCollection.key<List<ScriptAcceptedLocation>>(
|
||||||
|
listOf(
|
||||||
|
ScriptAcceptedLocation.Sources,
|
||||||
|
ScriptAcceptedLocation.Tests
|
||||||
|
)
|
||||||
|
)
|
||||||
+8
-3
@@ -40,14 +40,17 @@ class BridgeDependenciesResolver(
|
|||||||
)
|
)
|
||||||
|
|
||||||
val oldClasspath =
|
val oldClasspath =
|
||||||
scriptCompilationConfiguration[ScriptCompilationConfiguration.dependencies]
|
scriptCompilationConfiguration[ScriptCompilationConfiguration.dependencies].toClassPathOrEmpty()
|
||||||
?.flatMap { (it as JvmDependency).classpath } ?: emptyList()
|
|
||||||
|
|
||||||
val defaultImports = scriptCompilationConfiguration[ScriptCompilationConfiguration.defaultImports]?.toList() ?: emptyList()
|
val defaultImports = scriptCompilationConfiguration[ScriptCompilationConfiguration.defaultImports]?.toList() ?: emptyList()
|
||||||
|
|
||||||
val refineFn = scriptCompilationConfiguration[ScriptCompilationConfiguration.refineConfigurationOnAnnotations]?.handler
|
val refineFn = scriptCompilationConfiguration[ScriptCompilationConfiguration.refineConfigurationOnAnnotations]?.handler
|
||||||
?: return DependenciesResolver.ResolveResult.Success(
|
?: return DependenciesResolver.ResolveResult.Success(
|
||||||
ScriptDependencies(classpath = oldClasspath, imports = defaultImports),
|
ScriptDependencies(
|
||||||
|
classpath = oldClasspath,
|
||||||
|
sources = scriptCompilationConfiguration[ScriptCompilationConfiguration.ide.dependenciesSources].toClassPathOrEmpty(),
|
||||||
|
imports = defaultImports
|
||||||
|
),
|
||||||
diagnostics
|
diagnostics
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -72,6 +75,7 @@ class BridgeDependenciesResolver(
|
|||||||
return DependenciesResolver.ResolveResult.Success(
|
return DependenciesResolver.ResolveResult.Success(
|
||||||
ScriptDependencies(
|
ScriptDependencies(
|
||||||
classpath = newClasspath, // TODO: maybe it should return only increment from the initial config
|
classpath = newClasspath, // TODO: maybe it should return only increment from the initial config
|
||||||
|
sources = refinedConfiguration[ScriptCompilationConfiguration.ide.dependenciesSources].toClassPathOrEmpty(),
|
||||||
imports = defaultImports
|
imports = defaultImports
|
||||||
),
|
),
|
||||||
diagnostics
|
diagnostics
|
||||||
@@ -93,3 +97,4 @@ internal fun ScriptContents.toScriptSource(): SourceCode = when {
|
|||||||
else -> throw IllegalArgumentException("Unable to convert script contents $this into script source")
|
else -> throw IllegalArgumentException("Unable to convert script contents $this into script source")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal fun List<ScriptDependency>?.toClassPathOrEmpty() = this?.flatMap { (it as JvmDependency).classpath } ?: emptyList()
|
||||||
|
|||||||
+10
-5
@@ -76,11 +76,16 @@ abstract class KotlinScriptDefinitionAdapterFromNewAPIBase : KotlinScriptDefinit
|
|||||||
get() = scriptCompilationConfiguration[ScriptCompilationConfiguration.compilerOptions]
|
get() = scriptCompilationConfiguration[ScriptCompilationConfiguration.compilerOptions]
|
||||||
.orEmpty()
|
.orEmpty()
|
||||||
|
|
||||||
override val scriptExpectedLocations: List<ScriptExpectedLocation> =
|
override val scriptExpectedLocations: List<ScriptExpectedLocation>
|
||||||
listOf(
|
get() = scriptCompilationConfiguration[ScriptCompilationConfiguration.ide.acceptedLocations]?.map {
|
||||||
ScriptExpectedLocation.SourcesOnly,
|
when(it) {
|
||||||
ScriptExpectedLocation.TestsOnly
|
ScriptAcceptedLocation.Sources -> ScriptExpectedLocation.SourcesOnly
|
||||||
)
|
ScriptAcceptedLocation.Tests -> ScriptExpectedLocation.TestsOnly
|
||||||
|
ScriptAcceptedLocation.Libraries -> ScriptExpectedLocation.Libraries
|
||||||
|
ScriptAcceptedLocation.Project -> ScriptExpectedLocation.Project
|
||||||
|
ScriptAcceptedLocation.Everywhere -> ScriptExpectedLocation.Everywhere
|
||||||
|
}
|
||||||
|
} ?: listOf(ScriptExpectedLocation.SourcesOnly, ScriptExpectedLocation.TestsOnly)
|
||||||
|
|
||||||
private val scriptingClassGetter by lazy(LazyThreadSafetyMode.PUBLICATION) {
|
private val scriptingClassGetter by lazy(LazyThreadSafetyMode.PUBLICATION) {
|
||||||
hostConfiguration[ScriptingHostConfiguration.getScriptingClass]
|
hostConfiguration[ScriptingHostConfiguration.getScriptingClass]
|
||||||
|
|||||||
Reference in New Issue
Block a user