Add reading script configuration files on compilation
This commit is contained in:
@@ -115,8 +115,6 @@ class K2JVMCompiler : CLICompiler<K2JVMCompilerArguments>() {
|
|||||||
return ExitCode.OK
|
return ExitCode.OK
|
||||||
}
|
}
|
||||||
|
|
||||||
configuration.add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, StandardScriptDefinition)
|
|
||||||
|
|
||||||
if (arguments.skipMetadataVersionCheck) {
|
if (arguments.skipMetadataVersionCheck) {
|
||||||
JvmMetadataVersion.skipCheck = true
|
JvmMetadataVersion.skipCheck = true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,9 +64,7 @@ import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
|
|||||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.ERROR
|
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.ERROR
|
||||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.WARNING
|
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.WARNING
|
||||||
import org.jetbrains.kotlin.cli.common.toBooleanLenient
|
import org.jetbrains.kotlin.cli.common.toBooleanLenient
|
||||||
import org.jetbrains.kotlin.cli.jvm.config.JavaSourceRoot
|
import org.jetbrains.kotlin.cli.jvm.config.*
|
||||||
import org.jetbrains.kotlin.cli.jvm.config.JvmClasspathRoot
|
|
||||||
import org.jetbrains.kotlin.cli.jvm.config.JvmContentRoot
|
|
||||||
import org.jetbrains.kotlin.codegen.extensions.ClassBuilderInterceptorExtension
|
import org.jetbrains.kotlin.codegen.extensions.ClassBuilderInterceptorExtension
|
||||||
import org.jetbrains.kotlin.codegen.extensions.ExpressionCodegenExtension
|
import org.jetbrains.kotlin.codegen.extensions.ExpressionCodegenExtension
|
||||||
import org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar
|
import org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar
|
||||||
@@ -89,7 +87,7 @@ import org.jetbrains.kotlin.resolve.jvm.extensions.AnalysisCompletedHandlerExten
|
|||||||
import org.jetbrains.kotlin.resolve.jvm.extensions.PackageFragmentProviderExtension
|
import org.jetbrains.kotlin.resolve.jvm.extensions.PackageFragmentProviderExtension
|
||||||
import org.jetbrains.kotlin.resolve.lazy.declarations.CliDeclarationProviderFactoryService
|
import org.jetbrains.kotlin.resolve.lazy.declarations.CliDeclarationProviderFactoryService
|
||||||
import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactoryService
|
import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactoryService
|
||||||
import org.jetbrains.kotlin.script.KotlinScriptDefinitionProvider
|
import org.jetbrains.kotlin.script.*
|
||||||
import org.jetbrains.kotlin.utils.PathUtil
|
import org.jetbrains.kotlin.utils.PathUtil
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@@ -122,7 +120,6 @@ class KotlinCoreEnvironment private constructor(
|
|||||||
registerProjectServicesForCLI(projectEnvironment)
|
registerProjectServicesForCLI(projectEnvironment)
|
||||||
registerProjectServices(projectEnvironment)
|
registerProjectServices(projectEnvironment)
|
||||||
|
|
||||||
fillClasspath(configuration)
|
|
||||||
val fileManager = ServiceManager.getService(project, CoreJavaFileManager::class.java)
|
val fileManager = ServiceManager.getService(project, CoreJavaFileManager::class.java)
|
||||||
val index = JvmDependenciesIndex(javaRoots)
|
val index = JvmDependenciesIndex(javaRoots)
|
||||||
(fileManager as KotlinCliJavaFileManagerImpl).initIndex(index)
|
(fileManager as KotlinCliJavaFileManagerImpl).initIndex(index)
|
||||||
@@ -137,7 +134,27 @@ class KotlinCoreEnvironment private constructor(
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
KotlinScriptDefinitionProvider.getInstance(project).scriptDefinitions = configuration.getList(JVMConfigurationKeys.SCRIPT_DEFINITIONS)
|
KotlinScriptDefinitionProvider.getInstance(project).let { scriptDefinitionProvider ->
|
||||||
|
scriptDefinitionProvider.scriptDefinitions =
|
||||||
|
configuration.getList(JVMConfigurationKeys.SCRIPT_DEFINITIONS).let {
|
||||||
|
if (it.isNotEmpty()) it
|
||||||
|
else {
|
||||||
|
val kotlinEnvVars = generateKotlinScriptClasspathEnvVarsForCompiler(project)
|
||||||
|
loadScriptConfigsFromProjectRoot(File(project.basePath ?: ".")).map {
|
||||||
|
KotlinConfigurableScriptDefinition(it, kotlinEnvVars)
|
||||||
|
} + StandardScriptDefinition
|
||||||
|
}
|
||||||
|
}
|
||||||
|
KotlinScriptExtraImportsProvider.getInstance(project).let { scriptExtraImportsProvider ->
|
||||||
|
configuration.addJvmClasspathRoots(
|
||||||
|
sourceFiles
|
||||||
|
.filter { it.originalFile.virtualFile != null && scriptDefinitionProvider.isScript(it.originalFile.virtualFile) }
|
||||||
|
.flatMap { scriptExtraImportsProvider.getExtraImports(it.originalFile.virtualFile).flatMap { it.classpath.map { File(it).canonicalFile } } }
|
||||||
|
.distinct())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fillClasspath(configuration)
|
||||||
|
|
||||||
project.registerService(JvmVirtualFileFinderFactory::class.java, JvmCliVirtualFileFinderFactory(index))
|
project.registerService(JvmVirtualFileFinderFactory::class.java, JvmCliVirtualFileFinderFactory(index))
|
||||||
|
|
||||||
@@ -391,6 +408,7 @@ class KotlinCoreEnvironment private constructor(
|
|||||||
@JvmStatic fun registerProjectServices(projectEnvironment: JavaCoreProjectEnvironment) {
|
@JvmStatic fun registerProjectServices(projectEnvironment: JavaCoreProjectEnvironment) {
|
||||||
with (projectEnvironment.project) {
|
with (projectEnvironment.project) {
|
||||||
registerService(KotlinScriptDefinitionProvider::class.java, KotlinScriptDefinitionProvider())
|
registerService(KotlinScriptDefinitionProvider::class.java, KotlinScriptDefinitionProvider())
|
||||||
|
registerService(KotlinScriptExtraImportsProvider::class.java, KotlinScriptExtraImportsProvider(projectEnvironment.project))
|
||||||
registerService(KotlinJavaPsiFacade::class.java, KotlinJavaPsiFacade(this))
|
registerService(KotlinJavaPsiFacade::class.java, KotlinJavaPsiFacade(this))
|
||||||
registerService(KtLightClassForFacade.FacadeStubCache::class.java, KtLightClassForFacade.FacadeStubCache(this))
|
registerService(KtLightClassForFacade.FacadeStubCache::class.java, KtLightClassForFacade.FacadeStubCache(this))
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user