Read script config if appropriate flag is specified, fix classpath handling

This commit is contained in:
Ilya Chernikov
2016-06-01 14:43:37 +02:00
parent abfda50077
commit 3e6616de42
10 changed files with 56 additions and 23 deletions
@@ -284,6 +284,7 @@ class K2JVMCompiler : CLICompiler<K2JVMCompilerArguments>() {
configuration.put(JVMConfigurationKeys.INHERIT_MULTIFILE_PARTS, arguments.inheritMultifileParts)
configuration.put(CLIConfigurationKeys.ALLOW_KOTLIN_PACKAGE, arguments.allowKotlinPackage)
configuration.put(CLIConfigurationKeys.REPORT_PERF, arguments.reportPerf)
configuration.put(JVMConfigurationKeys.LOAD_SCRIPT_CONFIGS, arguments.loadScriptConfigs)
arguments.declarationsOutputPath?.let { configuration.put(JVMConfigurationKeys.DECLARATIONS_JSON_PATH, it) }
}
@@ -138,12 +138,21 @@ class KotlinCoreEnvironment private constructor(
KotlinScriptDefinitionProvider.getInstance(project).let { scriptDefinitionProvider ->
scriptDefinitionProvider.scriptDefinitions =
configuration.getList(JVMConfigurationKeys.SCRIPT_DEFINITIONS)
.ifEmpty { listOf(StandardScriptDefinition) }
.ifEmpty {
if (configuration.get(JVMConfigurationKeys.LOAD_SCRIPT_CONFIGS) ?: false)
loadScriptConfigsFromProjectRoot(File(project.basePath ?: ".")).let { configs ->
val kotlinEnvVars = generateKotlinScriptClasspathEnvVars(project)
configs.map { KotlinConfigurableScriptDefinition(it, kotlinEnvVars) } + StandardScriptDefinition
}
else null
?: listOf(StandardScriptDefinition)
}
configuration.addJvmClasspathRoots(
sourceFiles
.mapNotNull { src -> src.virtualFile?.let { scriptDefinitionProvider.findScriptDefinition(it) } }
.flatMap { it.getScriptDependenciesClasspath().map { File(it).canonicalFile } }
.mapNotNull { src -> src.virtualFile }
.flatMap { getScriptCombinedClasspath(it, project) }
.map { File(it).canonicalFile }
.distinct())
}