1
1
package io.projectenv.intellijplugin.services.impl
2
2
3
+ import com.intellij.openapi.application.ApplicationManager
3
4
import com.intellij.openapi.components.service
4
5
import com.intellij.openapi.extensions.ProjectExtensionPointName
6
+ import com.intellij.openapi.progress.ProgressManager
5
7
import com.intellij.openapi.project.Project
6
8
import io.projectenv.core.configuration.ProjectEnvConfiguration
7
9
import io.projectenv.core.configuration.ProjectEnvConfigurationFactory
@@ -10,23 +12,40 @@ import io.projectenv.core.toolinfo.ToolInfo
10
12
import io.projectenv.intellijplugin.configurers.ToolConfigurer
11
13
import io.projectenv.intellijplugin.services.ExecutionEnvironmentService
12
14
import io.projectenv.intellijplugin.services.ProjectEnvService
15
+ import org.slf4j.LoggerFactory
13
16
import java.io.File
14
17
15
18
class ProjectEnvServiceImpl (val project : Project ) : ProjectEnvService {
16
19
17
- private val TOOL_CONFIGURER_EXTENSION_POINT_NAME : ProjectExtensionPointName <ToolConfigurer <ToolInfo >> =
20
+ private val logger = LoggerFactory .getLogger(this .javaClass)
21
+
22
+ private val toolConfigurerExtensionPoint: ProjectExtensionPointName <ToolConfigurer <ToolInfo >> =
18
23
ProjectExtensionPointName (" ch.repolevedavaj.projectenv.intellijplugin.toolConfigurer" )
19
24
20
25
override fun refreshProjectEnv () {
21
- val configurationFile = File (project.basePath, " project-env.yml" )
22
- if (configurationFile.exists()) {
23
- val projectEnvConfiguration: ProjectEnvConfiguration =
24
- ProjectEnvConfigurationFactory .createFromFile(configurationFile)
25
-
26
- val toolDetailsList = installTools(projectEnvConfiguration)
27
- configureExecutionEnvironment(toolDetailsList)
28
- configureTools(toolDetailsList)
29
- }
26
+ ProgressManager .getInstance().runProcessWithProgressSynchronously(
27
+ {
28
+ try {
29
+ val configurationFile = File (project.basePath, " project-env.yml" )
30
+ if (configurationFile.exists()) {
31
+ val projectEnvConfiguration: ProjectEnvConfiguration =
32
+ ProjectEnvConfigurationFactory .createFromFile(configurationFile)
33
+
34
+ val toolDetailsList = installTools(projectEnvConfiguration)
35
+ configureExecutionEnvironment(toolDetailsList)
36
+
37
+ ApplicationManager .getApplication().invokeLater {
38
+ configureTools(toolDetailsList)
39
+ }
40
+ }
41
+ } catch (exception: Exception ) {
42
+ logger.error(" failed to refresh project environment" , exception)
43
+ }
44
+ },
45
+ " Installing Project-Env" ,
46
+ false ,
47
+ project
48
+ )
30
49
}
31
50
32
51
private fun installTools (projectEnvConfiguration : ProjectEnvConfiguration ): List <ToolInfo > {
@@ -51,7 +70,7 @@ class ProjectEnvServiceImpl(val project: Project) : ProjectEnvService {
51
70
52
71
private fun configureTools (toolInfos : List <ToolInfo >) {
53
72
for (toolInfo in toolInfos) {
54
- for (toolConfigurer in TOOL_CONFIGURER_EXTENSION_POINT_NAME .extensions(project)) {
73
+ for (toolConfigurer in toolConfigurerExtensionPoint .extensions(project)) {
55
74
if (toolConfigurer.supportsType(toolInfo)) {
56
75
toolConfigurer.configureTool(toolInfo)
57
76
}
0 commit comments