Move KotlinScriptConfigurationManager to idea module
This commit is contained in:
-19
@@ -32,7 +32,6 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
import org.jetbrains.kotlin.parsing.KotlinParserDefinition
|
import org.jetbrains.kotlin.parsing.KotlinParserDefinition
|
||||||
import org.jetbrains.kotlin.psi.KtScript
|
import org.jetbrains.kotlin.psi.KtScript
|
||||||
import org.jetbrains.kotlin.types.KotlinType
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
import org.jetbrains.kotlin.utils.PathUtil
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.InputStream
|
import java.io.InputStream
|
||||||
import java.io.StringWriter
|
import java.io.StringWriter
|
||||||
@@ -41,24 +40,6 @@ import java.util.*
|
|||||||
|
|
||||||
val SCRIPT_CONFIG_FILE_EXTENSION = ".ktscfg.xml"
|
val SCRIPT_CONFIG_FILE_EXTENSION = ".ktscfg.xml"
|
||||||
|
|
||||||
class KotlinScriptConfigurationManager(project: Project, scriptDefinitionProvider: KotlinScriptDefinitionProvider) : AbstractProjectComponent(project) {
|
|
||||||
|
|
||||||
val kotlinEnvVars: Map<String, List<String>> by lazy {
|
|
||||||
val paths = PathUtil.getKotlinPathsForIdeaPlugin()
|
|
||||||
mapOf("kotlin-runtime" to listOf(paths.runtimePath.canonicalPath),
|
|
||||||
"project-root" to listOf(project.basePath ?: "."),
|
|
||||||
"jdk" to PathUtil.getJdkClassesRoots().map { it.canonicalPath })
|
|
||||||
}
|
|
||||||
|
|
||||||
init {
|
|
||||||
loadScriptDefinitionsFromDirectoryWithConfigs(File(project.basePath ?: "."), kotlinEnvVars).let {
|
|
||||||
if (it.isNotEmpty()) {
|
|
||||||
scriptDefinitionProvider.setScriptDefinitions(it + StandardScriptDefinition)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun loadScriptDefinitionsFromDirectoryWithConfigs(dir: File, kotlinEnvVars: Map<String, List<String>>? = null): List<KotlinConfigurableScriptDefinition> =
|
fun loadScriptDefinitionsFromDirectoryWithConfigs(dir: File, kotlinEnvVars: Map<String, List<String>>? = null): List<KotlinConfigurableScriptDefinition> =
|
||||||
dir.walk().filter { it.isFile && it.name.endsWith(SCRIPT_CONFIG_FILE_EXTENSION, ignoreCase = true) }.toList()
|
dir.walk().filter { it.isFile && it.name.endsWith(SCRIPT_CONFIG_FILE_EXTENSION, ignoreCase = true) }.toList()
|
||||||
.flatMap { loadScriptDefinitionsFromConfig(it, kotlinEnvVars) }
|
.flatMap { loadScriptDefinitionsFromConfig(it, kotlinEnvVars) }
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
<implementation-class>org.jetbrains.kotlin.asJava.KotlinCodeBlockModificationListener</implementation-class>
|
<implementation-class>org.jetbrains.kotlin.asJava.KotlinCodeBlockModificationListener</implementation-class>
|
||||||
</component>
|
</component>
|
||||||
<component>
|
<component>
|
||||||
<implementation-class>org.jetbrains.kotlin.script.KotlinScriptConfigurationManager</implementation-class>
|
<implementation-class>org.jetbrains.kotlin.idea.script.KotlinScriptConfigurationManager</implementation-class>
|
||||||
</component>
|
</component>
|
||||||
</project-components>
|
</project-components>
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2016 JetBrains s.r.o.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.idea.script
|
||||||
|
|
||||||
|
import com.intellij.openapi.components.AbstractProjectComponent
|
||||||
|
import com.intellij.openapi.project.Project
|
||||||
|
import org.jetbrains.kotlin.script.KotlinScriptDefinitionProvider
|
||||||
|
import org.jetbrains.kotlin.script.StandardScriptDefinition
|
||||||
|
import org.jetbrains.kotlin.script.loadScriptDefinitionsFromDirectoryWithConfigs
|
||||||
|
import org.jetbrains.kotlin.utils.PathUtil
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
class KotlinScriptConfigurationManager(project: Project, scriptDefinitionProvider: KotlinScriptDefinitionProvider) : AbstractProjectComponent(project) {
|
||||||
|
|
||||||
|
val kotlinEnvVars: Map<String, List<String>> by lazy {
|
||||||
|
val paths = PathUtil.getKotlinPathsForIdeaPlugin()
|
||||||
|
mapOf("kotlin-runtime" to listOf(paths.runtimePath.canonicalPath),
|
||||||
|
"project-root" to listOf(project.basePath ?: "."),
|
||||||
|
"jdk" to PathUtil.getJdkClassesRoots().map { it.canonicalPath })
|
||||||
|
}
|
||||||
|
|
||||||
|
init {
|
||||||
|
loadScriptDefinitionsFromDirectoryWithConfigs(File(project.basePath ?: "."), kotlinEnvVars).let {
|
||||||
|
if (it.isNotEmpty()) {
|
||||||
|
scriptDefinitionProvider.setScriptDefinitions(it + StandardScriptDefinition)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user