Switch to File instead of String for classpaths in script dependencies
This commit is contained in:
committed by
Pavel V. Talanov
parent
5e3ba36cc1
commit
64bb47ed37
@@ -152,8 +152,7 @@ class KotlinCoreEnvironment private constructor(
|
|||||||
KotlinScriptExternalImportsProvider.getInstance(project)?.run {
|
KotlinScriptExternalImportsProvider.getInstance(project)?.run {
|
||||||
configuration.addJvmClasspathRoots(
|
configuration.addJvmClasspathRoots(
|
||||||
getCombinedClasspathFor(sourceFiles)
|
getCombinedClasspathFor(sourceFiles)
|
||||||
.map { File(it).canonicalFile }
|
.distinctBy { it.absolutePath })
|
||||||
.distinct())
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -44,7 +44,7 @@ data class KotlinConfigurableScriptDefinition(val config: KotlinScriptConfig, va
|
|||||||
|
|
||||||
override fun getScriptName(script: KtScript): Name = ScriptNameUtil.fileNameWithExtensionStripped(script, KotlinParserDefinition.STD_SCRIPT_EXT)
|
override fun getScriptName(script: KtScript): Name = ScriptNameUtil.fileNameWithExtensionStripped(script, KotlinParserDefinition.STD_SCRIPT_EXT)
|
||||||
|
|
||||||
private val evaluatedClasspath by lazy { config.classpath.evalWithVars(environmentVars).distinct() }
|
private val evaluatedClasspath by lazy { config.classpath.evalWithVars(environmentVars).map { File(it) }.distinctBy { it.canonicalPath } }
|
||||||
|
|
||||||
override fun <TF> getDependenciesFor(file: TF, project: Project): KotlinScriptExternalDependencies? =
|
override fun <TF> getDependenciesFor(file: TF, project: Project): KotlinScriptExternalDependencies? =
|
||||||
if (!isScript(file)) null
|
if (!isScript(file)) null
|
||||||
@@ -53,13 +53,13 @@ data class KotlinConfigurableScriptDefinition(val config: KotlinScriptConfig, va
|
|||||||
when {
|
when {
|
||||||
extDeps != null ->
|
extDeps != null ->
|
||||||
object : KotlinScriptExternalDependencies {
|
object : KotlinScriptExternalDependencies {
|
||||||
override val classpath = evaluatedClasspath + extDeps.classpath.evalWithVars(environmentVars).distinct()
|
override val classpath: Iterable<File> = evaluatedClasspath + extDeps.classpath
|
||||||
override val imports = extDeps.imports
|
override val imports = extDeps.imports
|
||||||
override val sources = extDeps.sources.evalWithVars(environmentVars).distinct()
|
override val sources: Iterable<File> = extDeps.sources
|
||||||
}
|
}
|
||||||
!evaluatedClasspath.isEmpty() ->
|
!evaluatedClasspath.isEmpty() ->
|
||||||
object : KotlinScriptExternalDependencies {
|
object : KotlinScriptExternalDependencies {
|
||||||
override val classpath = evaluatedClasspath
|
override val classpath: Iterable<File> = evaluatedClasspath
|
||||||
}
|
}
|
||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,15 +58,15 @@ interface KotlinScriptDefinition {
|
|||||||
}
|
}
|
||||||
|
|
||||||
interface KotlinScriptExternalDependencies {
|
interface KotlinScriptExternalDependencies {
|
||||||
val classpath: Iterable<String> get() = emptyList()
|
val classpath: Iterable<File> get() = emptyList()
|
||||||
val imports: Iterable<String> get() = emptyList()
|
val imports: Iterable<String> get() = emptyList()
|
||||||
val sources: Iterable<String> get() = emptyList()
|
val sources: Iterable<File> get() = emptyList()
|
||||||
}
|
}
|
||||||
|
|
||||||
class KotlinScriptExternalDependenciesUnion(val dependencies: Iterable<KotlinScriptExternalDependencies>) : KotlinScriptExternalDependencies {
|
class KotlinScriptExternalDependenciesUnion(val dependencies: Iterable<KotlinScriptExternalDependencies>) : KotlinScriptExternalDependencies {
|
||||||
override val classpath: Iterable<String> get() = dependencies.flatMap { it.classpath }
|
override val classpath: Iterable<File> get() = dependencies.flatMap { it.classpath }
|
||||||
override val imports: Iterable<String> get() = dependencies.flatMap { it.imports }
|
override val imports: Iterable<String> get() = dependencies.flatMap { it.imports }
|
||||||
override val sources: Iterable<String> get() = dependencies.flatMap { it.sources }
|
override val sources: Iterable<File> get() = dependencies.flatMap { it.sources }
|
||||||
}
|
}
|
||||||
|
|
||||||
data class ScriptParameter(val name: Name, val type: KotlinType)
|
data class ScriptParameter(val name: Name, val type: KotlinType)
|
||||||
|
|||||||
+3
-2
@@ -18,6 +18,7 @@ package org.jetbrains.kotlin.script
|
|||||||
|
|
||||||
import com.intellij.openapi.components.ServiceManager
|
import com.intellij.openapi.components.ServiceManager
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
|
import java.io.File
|
||||||
import java.util.concurrent.locks.ReentrantReadWriteLock
|
import java.util.concurrent.locks.ReentrantReadWriteLock
|
||||||
import kotlin.concurrent.read
|
import kotlin.concurrent.read
|
||||||
import kotlin.concurrent.write
|
import kotlin.concurrent.write
|
||||||
@@ -90,11 +91,11 @@ class KotlinScriptExternalImportsProvider(val project: Project, private val scri
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getKnownCombinedClasspath(): List<String> = cacheLock.read {
|
fun getKnownCombinedClasspath(): List<File> = cacheLock.read {
|
||||||
cache.values.flatMap { it.classpath }
|
cache.values.flatMap { it.classpath }
|
||||||
}.distinct()
|
}.distinct()
|
||||||
|
|
||||||
fun <TF> getCombinedClasspathFor(files: Iterable<TF>): List<String> =
|
fun <TF> getCombinedClasspathFor(files: Iterable<TF>): List<File> =
|
||||||
getExternalImports(files)
|
getExternalImports(files)
|
||||||
.flatMap { it.classpath }
|
.flatMap { it.classpath }
|
||||||
.distinct()
|
.distinct()
|
||||||
|
|||||||
+2
-2
@@ -30,7 +30,7 @@ import java.util.*
|
|||||||
class KotlinScriptExternalDependenciesConfig : KotlinScriptExternalDependencies {
|
class KotlinScriptExternalDependenciesConfig : KotlinScriptExternalDependencies {
|
||||||
@Tag("classpath")
|
@Tag("classpath")
|
||||||
@AbstractCollection(surroundWithTag = false, elementTag = "path", elementValueAttribute = "")
|
@AbstractCollection(surroundWithTag = false, elementTag = "path", elementValueAttribute = "")
|
||||||
override var classpath: MutableList<String> = ArrayList()
|
override var classpath: Iterable<File> = ArrayList()
|
||||||
|
|
||||||
@Tag("imports")
|
@Tag("imports")
|
||||||
@AbstractCollection(surroundWithTag = false, elementTag = "name", elementValueAttribute = "")
|
@AbstractCollection(surroundWithTag = false, elementTag = "name", elementValueAttribute = "")
|
||||||
@@ -38,7 +38,7 @@ class KotlinScriptExternalDependenciesConfig : KotlinScriptExternalDependencies
|
|||||||
|
|
||||||
@Tag("sources")
|
@Tag("sources")
|
||||||
@AbstractCollection(surroundWithTag = false, elementTag = "path", elementValueAttribute = "")
|
@AbstractCollection(surroundWithTag = false, elementTag = "path", elementValueAttribute = "")
|
||||||
override var sources: MutableList<String> = ArrayList()
|
override var sources: Iterable<File> = ArrayList()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun loadScriptExternalImportConfigs(configFile: File): List<KotlinScriptExternalDependenciesConfig> =
|
fun loadScriptExternalImportConfigs(configFile: File): List<KotlinScriptExternalDependenciesConfig> =
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ data class KotlinScriptDefinitionFromTemplate(val template: KClass<out Any>, val
|
|||||||
is PsiFile -> getAnnotationEntriesFromPsiFile(file)
|
is PsiFile -> getAnnotationEntriesFromPsiFile(file)
|
||||||
is VirtualFile -> getAnnotationEntriesFromVirtualFile(file, project)
|
is VirtualFile -> getAnnotationEntriesFromVirtualFile(file, project)
|
||||||
is File -> {
|
is File -> {
|
||||||
val virtualFile = (StandardFileSystems.local().findFileByPath(file.absolutePath)
|
val virtualFile = (StandardFileSystems.local().findFileByPath(file.canonicalPath)
|
||||||
?: throw java.lang.IllegalArgumentException("Unable to find file ${file.canonicalPath}"))
|
?: throw java.lang.IllegalArgumentException("Unable to find file ${file.canonicalPath}"))
|
||||||
getAnnotationEntriesFromVirtualFile(virtualFile, project)
|
getAnnotationEntriesFromVirtualFile(virtualFile, project)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,17 +27,17 @@ import java.net.URL
|
|||||||
import java.net.URLClassLoader
|
import java.net.URLClassLoader
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
|
|
||||||
abstract class BaseScriptDefinition (val extension: String, val cp: List<String>? = null) : KotlinScriptDefinition {
|
abstract class BaseScriptDefinition (val extension: String, val cp: List<File>? = null) : KotlinScriptDefinition {
|
||||||
override val name = "Test Kotlin Script"
|
override val name = "Test Kotlin Script"
|
||||||
override fun <TF> isScript(file: TF): Boolean = getFileName(file).endsWith(extension)
|
override fun <TF> isScript(file: TF): Boolean = getFileName(file).endsWith(extension)
|
||||||
override fun getScriptName(script: KtScript): Name = ScriptNameUtil.fileNameWithExtensionStripped(script, extension)
|
override fun getScriptName(script: KtScript): Name = ScriptNameUtil.fileNameWithExtensionStripped(script, extension)
|
||||||
override fun <TF> getDependenciesFor(file: TF, project: Project): KotlinScriptExternalDependencies? =
|
override fun <TF> getDependenciesFor(file: TF, project: Project): KotlinScriptExternalDependencies? =
|
||||||
object : KotlinScriptExternalDependencies {
|
object : KotlinScriptExternalDependencies {
|
||||||
override val classpath = cp ?: (classpathFromProperty() + classpathFromClassloader(BaseScriptDefinition::class.java.classLoader)).distinct()
|
override val classpath: Iterable<File> = cp ?: (classpathFromProperty() + classpathFromClassloader(BaseScriptDefinition::class.java.classLoader)).distinct()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
open class SimpleParamsWithClasspathTestScriptDefinition(extension: String, val parameters: List<ScriptParameter>, classpath: List<String>? = null, val extraDependencies: KotlinScriptExternalDependencies? = null)
|
open class SimpleParamsWithClasspathTestScriptDefinition(extension: String, val parameters: List<ScriptParameter>, classpath: List<File>? = null, val extraDependencies: KotlinScriptExternalDependencies? = null)
|
||||||
: BaseScriptDefinition(extension, classpath)
|
: BaseScriptDefinition(extension, classpath)
|
||||||
{
|
{
|
||||||
override fun getScriptParameters(scriptDescriptor: ScriptDescriptor) = parameters
|
override fun getScriptParameters(scriptDescriptor: ScriptDescriptor) = parameters
|
||||||
@@ -45,14 +45,14 @@ open class SimpleParamsWithClasspathTestScriptDefinition(extension: String, val
|
|||||||
|
|
||||||
open class SimpleParamsTestScriptDefinition(extension: String, parameters: List<ScriptParameter>) : SimpleParamsWithClasspathTestScriptDefinition(extension, parameters)
|
open class SimpleParamsTestScriptDefinition(extension: String, parameters: List<ScriptParameter>) : SimpleParamsWithClasspathTestScriptDefinition(extension, parameters)
|
||||||
|
|
||||||
class ReflectedParamClassTestScriptDefinition(extension: String, val paramName: String, val parameter: KClass<out Any>, classpath: List<String>? = null)
|
class ReflectedParamClassTestScriptDefinition(extension: String, val paramName: String, val parameter: KClass<out Any>, classpath: List<File>? = null)
|
||||||
: BaseScriptDefinition(extension, classpath)
|
: BaseScriptDefinition(extension, classpath)
|
||||||
{
|
{
|
||||||
override fun getScriptParameters(scriptDescriptor: ScriptDescriptor) =
|
override fun getScriptParameters(scriptDescriptor: ScriptDescriptor) =
|
||||||
listOf(makeReflectedClassScriptParameter(scriptDescriptor, Name.identifier(paramName), parameter))
|
listOf(makeReflectedClassScriptParameter(scriptDescriptor, Name.identifier(paramName), parameter))
|
||||||
}
|
}
|
||||||
|
|
||||||
open class ReflectedSuperclassTestScriptDefinition(extension: String, parameters: List<ScriptParameter>, val superclass: KClass<out Any>, classpath: List<String>? = null)
|
open class ReflectedSuperclassTestScriptDefinition(extension: String, parameters: List<ScriptParameter>, val superclass: KClass<out Any>, classpath: List<File>? = null)
|
||||||
: SimpleParamsWithClasspathTestScriptDefinition(extension, parameters, classpath)
|
: SimpleParamsWithClasspathTestScriptDefinition(extension, parameters, classpath)
|
||||||
{
|
{
|
||||||
override fun getScriptSupertypes(scriptDescriptor: ScriptDescriptor): List<KotlinType> =
|
override fun getScriptSupertypes(scriptDescriptor: ScriptDescriptor): List<KotlinType> =
|
||||||
@@ -63,14 +63,14 @@ class ReflectedSuperclassWithParamsTestScriptDefinition(extension: String,
|
|||||||
parameters: List<ScriptParameter>,
|
parameters: List<ScriptParameter>,
|
||||||
superclass: KClass<out Any>,
|
superclass: KClass<out Any>,
|
||||||
val superclassParameters: List<ScriptParameter>,
|
val superclassParameters: List<ScriptParameter>,
|
||||||
classpath: List<String>? = null)
|
classpath: List<File>? = null)
|
||||||
: ReflectedSuperclassTestScriptDefinition(extension, parameters, superclass, classpath)
|
: ReflectedSuperclassTestScriptDefinition(extension, parameters, superclass, classpath)
|
||||||
{
|
{
|
||||||
override fun getScriptParametersToPassToSuperclass(scriptDescriptor: ScriptDescriptor): List<Name> =
|
override fun getScriptParametersToPassToSuperclass(scriptDescriptor: ScriptDescriptor): List<Name> =
|
||||||
superclassParameters.map { it.name }
|
superclassParameters.map { it.name }
|
||||||
}
|
}
|
||||||
|
|
||||||
class StandardWithClasspathScriptDefinition(extension: String, classpath: List<String>? = null)
|
class StandardWithClasspathScriptDefinition(extension: String, classpath: List<File>? = null)
|
||||||
: BaseScriptDefinition(extension, classpath)
|
: BaseScriptDefinition(extension, classpath)
|
||||||
{
|
{
|
||||||
override fun getScriptParameters(scriptDescriptor: ScriptDescriptor) =
|
override fun getScriptParameters(scriptDescriptor: ScriptDescriptor) =
|
||||||
@@ -78,14 +78,14 @@ class StandardWithClasspathScriptDefinition(extension: String, classpath: List<S
|
|||||||
}
|
}
|
||||||
|
|
||||||
class SimpleScriptExtraDependencies(
|
class SimpleScriptExtraDependencies(
|
||||||
override val classpath: List<String>,
|
override val classpath: Iterable<File>,
|
||||||
override val imports: List<String> = emptyList()
|
override val imports: List<String> = emptyList()
|
||||||
) : KotlinScriptExternalDependencies
|
) : KotlinScriptExternalDependencies
|
||||||
|
|
||||||
fun classpathFromProperty(): List<String> =
|
fun classpathFromProperty(): List<File> =
|
||||||
System.getProperty("java.class.path")?.let {
|
System.getProperty("java.class.path")?.let {
|
||||||
it.split(String.format("\\%s", File.pathSeparatorChar).toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
|
it.split(String.format("\\%s", File.pathSeparatorChar).toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
|
||||||
.map { File(it).canonicalPath }
|
.map { File(it) }
|
||||||
} ?: emptyList()
|
} ?: emptyList()
|
||||||
|
|
||||||
fun URL.toFile() =
|
fun URL.toFile() =
|
||||||
@@ -97,8 +97,8 @@ fun URL.toFile() =
|
|||||||
else File(file)
|
else File(file)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun classpathFromClassloader(classLoader: ClassLoader): List<String> =
|
fun classpathFromClassloader(classLoader: ClassLoader): List<File> =
|
||||||
(classLoader as? URLClassLoader)?.urLs
|
(classLoader as? URLClassLoader)?.urLs
|
||||||
?.mapNotNull { it.toFile()?.canonicalPath }
|
?.mapNotNull { it.toFile() }
|
||||||
?: emptyList()
|
?: emptyList()
|
||||||
|
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ class ScriptTest {
|
|||||||
val aClass1 = compileScript("fib_ext.kts", SimpleParamsWithClasspathTestScriptDefinition(".kts", numIntParam(), classpath = emptyList()), runIsolated = true, suppressOutput = true)
|
val aClass1 = compileScript("fib_ext.kts", SimpleParamsWithClasspathTestScriptDefinition(".kts", numIntParam(), classpath = emptyList()), runIsolated = true, suppressOutput = true)
|
||||||
Assert.assertNull(aClass1)
|
Assert.assertNull(aClass1)
|
||||||
|
|
||||||
val cp = classpathFromClassloader(ScriptTest::class.java.classLoader).filter { it.contains("kotlin-runtime") || it.contains("junit") }
|
val cp = classpathFromClassloader(ScriptTest::class.java.classLoader).filter { it.name.contains("kotlin-runtime") || it.name.contains("junit") }
|
||||||
Assert.assertFalse(cp.isEmpty())
|
Assert.assertFalse(cp.isEmpty())
|
||||||
|
|
||||||
val aClass2 = compileScript("fib_ext.kts", SimpleParamsWithClasspathTestScriptDefinition(".kts", numIntParam(), classpath = cp), runIsolated = true)
|
val aClass2 = compileScript("fib_ext.kts", SimpleParamsWithClasspathTestScriptDefinition(".kts", numIntParam(), classpath = cp), runIsolated = true)
|
||||||
@@ -131,7 +131,7 @@ class ScriptTest {
|
|||||||
val aClass1 = compileScript("fib_ext.kts", SimpleParamsWithClasspathTestScriptDefinition(".kts", numIntParam(), classpath = emptyList()), runIsolated = true, suppressOutput = true)
|
val aClass1 = compileScript("fib_ext.kts", SimpleParamsWithClasspathTestScriptDefinition(".kts", numIntParam(), classpath = emptyList()), runIsolated = true, suppressOutput = true)
|
||||||
Assert.assertNull(aClass1)
|
Assert.assertNull(aClass1)
|
||||||
|
|
||||||
val cp = classpathFromClassloader(ScriptTest::class.java.classLoader).filter { it.contains("kotlin-runtime") || it.contains("junit") }
|
val cp = classpathFromClassloader(ScriptTest::class.java.classLoader).filter { it.name.contains("kotlin-runtime") || it.name.contains("junit") }
|
||||||
Assert.assertFalse(cp.isEmpty())
|
Assert.assertFalse(cp.isEmpty())
|
||||||
|
|
||||||
val aClass2 = compileScript("fib_ext.kts", SimpleParamsWithClasspathTestScriptDefinition(".kts", numIntParam(), classpath = cp, extraDependencies = SimpleScriptExtraDependencies(cp)), runIsolated = true)
|
val aClass2 = compileScript("fib_ext.kts", SimpleParamsWithClasspathTestScriptDefinition(".kts", numIntParam(), classpath = cp, extraDependencies = SimpleScriptExtraDependencies(cp)), runIsolated = true)
|
||||||
@@ -145,7 +145,8 @@ class ScriptTest {
|
|||||||
StandardWithClasspathScriptDefinition(
|
StandardWithClasspathScriptDefinition(
|
||||||
".kts",
|
".kts",
|
||||||
listOf("dependencies/bootstrap-compiler/Kotlin/kotlinc/lib/kotlin-runtime.jar",
|
listOf("dependencies/bootstrap-compiler/Kotlin/kotlinc/lib/kotlin-runtime.jar",
|
||||||
"dependencies/bootstrap-compiler/Kotlin/kotlinc/lib/kotlin-reflect.jar")))
|
"dependencies/bootstrap-compiler/Kotlin/kotlinc/lib/kotlin-reflect.jar")
|
||||||
|
.map { File(it) }))
|
||||||
Assert.assertNotNull(aClass)
|
Assert.assertNotNull(aClass)
|
||||||
var exceptionThrown = false
|
var exceptionThrown = false
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ import org.jetbrains.kotlin.test.TestJdkKind
|
|||||||
import org.jetbrains.kotlin.utils.PathUtil
|
import org.jetbrains.kotlin.utils.PathUtil
|
||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
import java.io.File
|
||||||
import java.net.URLClassLoader
|
import java.net.URLClassLoader
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
|
|
||||||
@@ -123,20 +124,20 @@ class GetTestKotlinScriptDependencies : GetScriptDependencies {
|
|||||||
val cp = anns.flatMap {
|
val cp = anns.flatMap {
|
||||||
it.value.mapNotNull {
|
it.value.mapNotNull {
|
||||||
when (it) {
|
when (it) {
|
||||||
is SimpleUntypedAst.Node.str -> if (it.value == "@{runtime}") kotlinPaths.runtimePath.canonicalPath else it.value
|
is SimpleUntypedAst.Node.str -> if (it.value == "@{runtime}") kotlinPaths.runtimePath else File(it.value)
|
||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return object : KotlinScriptExternalDependencies {
|
return object : KotlinScriptExternalDependencies {
|
||||||
override val classpath = classpathFromClassloader() + cp
|
override val classpath: Iterable<File> = classpathFromClassloader() + cp
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun classpathFromClassloader(): List<String> =
|
private fun classpathFromClassloader(): List<File> =
|
||||||
(GetTestKotlinScriptDependencies::class.java.classLoader as? URLClassLoader)?.urLs
|
(GetTestKotlinScriptDependencies::class.java.classLoader as? URLClassLoader)?.urLs
|
||||||
?.mapNotNull { it.toFile()?.canonicalPath }
|
?.mapNotNull { it.toFile() }
|
||||||
?.filter { it.contains("out/test") }
|
?.filter { it.path.contains("out") && it.path.contains("test") }
|
||||||
?: emptyList()
|
?: emptyList()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -310,7 +310,7 @@ internal data class ScriptModuleInfo(val project: Project, val module: Module?,
|
|||||||
// TODO: find out whether it should be cashed (some changes listener should be implemented for the cached roots)
|
// TODO: find out whether it should be cashed (some changes listener should be implemented for the cached roots)
|
||||||
val jarfs = StandardFileSystems.jar()
|
val jarfs = StandardFileSystems.jar()
|
||||||
return scriptDefinition.getDependenciesFor(scriptFile, project)?.classpath
|
return scriptDefinition.getDependenciesFor(scriptFile, project)?.classpath
|
||||||
?.map { File(it).canonicalFile }
|
?.map { it.canonicalFile }
|
||||||
?.distinct()
|
?.distinct()
|
||||||
?.mapNotNull {
|
?.mapNotNull {
|
||||||
// TODO: ensure that the entries are checked elsewhere, so diagnostics is delivered to a user if files are not correctly specified
|
// TODO: ensure that the entries are checked elsewhere, so diagnostics is delivered to a user if files are not correctly specified
|
||||||
|
|||||||
+4
-4
@@ -69,11 +69,11 @@ class KotlinScriptConfigurationManager(
|
|||||||
return allScriptsClasspathCache!!
|
return allScriptsClasspathCache!!
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun String.classpathEntryToVfs(): VirtualFile =
|
private fun File.classpathEntryToVfs(): VirtualFile =
|
||||||
if (File(this).isDirectory)
|
if (isDirectory)
|
||||||
StandardFileSystems.local()?.findFileByPath(this) ?: throw FileNotFoundException("Classpath entry points to a non-existent location: ${this}")
|
StandardFileSystems.local()?.findFileByPath(this.canonicalPath) ?: throw FileNotFoundException("Classpath entry points to a non-existent location: ${this}")
|
||||||
else
|
else
|
||||||
StandardFileSystems.jar()?.findFileByPath(this + URLUtil.JAR_SEPARATOR) ?: throw FileNotFoundException("Classpath entry points to a file that is not a JAR archive: ${this}")
|
StandardFileSystems.jar()?.findFileByPath(this.canonicalPath + URLUtil.JAR_SEPARATOR) ?: throw FileNotFoundException("Classpath entry points to a file that is not a JAR archive: ${this}")
|
||||||
|
|
||||||
fun getAllScriptsClasspathScope(): GlobalSearchScope? {
|
fun getAllScriptsClasspathScope(): GlobalSearchScope? {
|
||||||
return getAllScriptsClasspath().let { cp ->
|
return getAllScriptsClasspath().let { cp ->
|
||||||
|
|||||||
+1
-1
@@ -33,7 +33,7 @@ class GradleScriptTemplateProvider(project: Project, gim: GradleInstallationMana
|
|||||||
override val templateClass: String = "org.gradle.script.lang.kotlin.KotlinBuildScript"
|
override val templateClass: String = "org.gradle.script.lang.kotlin.KotlinBuildScript"
|
||||||
override val dependenciesClasspath: Iterable<String> =
|
override val dependenciesClasspath: Iterable<String> =
|
||||||
gradleLibsPath?.listFiles { file -> file.extension == "jar" && depLibsPrefixes.any { file.name.startsWith(it) } }
|
gradleLibsPath?.listFiles { file -> file.extension == "jar" && depLibsPrefixes.any { file.name.startsWith(it) } }
|
||||||
?.map { it.absolutePath }
|
?.map { it.canonicalPath }
|
||||||
?: emptyList()
|
?: emptyList()
|
||||||
override val context: Any? = gradleHome
|
override val context: Any? = gradleHome
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user