From 139ec8c920f1e0394c9fa58643ad3be1d4f00bc2 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Thu, 29 Dec 2016 18:50:54 +0300 Subject: [PATCH] Get script dependencies from script manager --- .../KotlinStandaloneScriptRunConfiguration.kt | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/run/script/standalone/KotlinStandaloneScriptRunConfiguration.kt b/idea/src/org/jetbrains/kotlin/idea/run/script/standalone/KotlinStandaloneScriptRunConfiguration.kt index 5e58356f92f..e011262d6f3 100644 --- a/idea/src/org/jetbrains/kotlin/idea/run/script/standalone/KotlinStandaloneScriptRunConfiguration.kt +++ b/idea/src/org/jetbrains/kotlin/idea/run/script/standalone/KotlinStandaloneScriptRunConfiguration.kt @@ -33,6 +33,7 @@ import com.intellij.psi.PsiElement import com.intellij.refactoring.listeners.RefactoringElementAdapter import com.intellij.refactoring.listeners.RefactoringElementListener import org.jdom.Element +import org.jetbrains.kotlin.idea.core.script.KotlinScriptConfigurationManager import org.jetbrains.kotlin.idea.run.script.standalone.KotlinStandaloneScriptRunConfigurationProducer.Companion.pathFromPsiElement import org.jetbrains.kotlin.parsing.KotlinParserDefinition import org.jetbrains.kotlin.psi.KtFile @@ -180,19 +181,27 @@ class KotlinStandaloneScriptRunConfiguration( } } -private class ScriptCommandLineState(environment: ExecutionEnvironment, configuration: KotlinStandaloneScriptRunConfiguration) : +private class ScriptCommandLineState( + environment: ExecutionEnvironment, + configuration: KotlinStandaloneScriptRunConfiguration) : BaseJavaApplicationCommandLineState(environment, configuration) { override fun createJavaParameters(): JavaParameters? { val params = commonParameters() + + val filePath = configuration.filePath ?: throw CantRunException("Script file was not specified") + val scriptVFile = LocalFileSystem.getInstance().findFileByIoFile(File(filePath)) ?: + throw CantRunException("Script file was not found in project") - val kotlinPaths = PathUtil.getKotlinPathsForIdeaPlugin() - listOf(kotlinPaths.compilerPath, kotlinPaths.reflectPath, kotlinPaths.runtimePath, kotlinPaths.scriptRuntimePath) - .map { it.absolutePath } - .forEach { dependencyJar -> params.classPath.add(dependencyJar) } + params.classPath.add(PathUtil.getKotlinPathsForIdeaPlugin().compilerPath) + + val scriptClasspath = KotlinScriptConfigurationManager.getInstance(environment.project).getScriptClasspath(scriptVFile) + scriptClasspath.forEach { + params.classPath.add(it.presentableUrl) + } params.mainClass = "org.jetbrains.kotlin.cli.jvm.K2JVMCompiler" - params.programParametersList.prepend(configuration.filePath ?: throw CantRunException("Script file was not specified")) + params.programParametersList.prepend(filePath) params.programParametersList.prepend("-script") return params