1
1
package cc.unitmesh.container
2
2
3
+ import cc.unitmesh.devti.AutoDevNotifications
3
4
import cc.unitmesh.devti.provider.RunService
4
5
import com.intellij.clouds.docker.gateway.DockerDevcontainerDeployContext
5
6
import com.intellij.clouds.docker.gateway.ui.DockerDeployView
@@ -34,17 +35,25 @@ class RunDevContainerService : RunService {
34
35
psiElement : PsiElement ? ,
35
36
isFromToolAction : Boolean
36
37
): String? {
37
- val server = dockerServers().firstOrNull() ? : return null
38
+ val server = dockerServers().firstOrNull()
39
+ if (server == null ) {
40
+ AutoDevNotifications .warn(project, " Cannot create DockerCloud server" )
41
+ return null
42
+ }
38
43
val projectDir = project.guessProjectDir()!! .toNioPath().toFile()
39
44
40
- val devcontainerFile = File (projectDir, " devcontainer.json" )
41
- devcontainerFile.writeText(virtualFile.contentsToByteArray().toString(Charsets .UTF_8 ))
45
+ val containerFile = File (projectDir, " devcontainer.json" )
46
+ containerFile.writeText(virtualFile.contentsToByteArray().toString(Charsets .UTF_8 ))
47
+
48
+ val content = try {
49
+ createContext(containerFile, projectDir, server)
50
+ } catch (e: Exception ) {
51
+ AutoDevNotifications .error(project, " Cannot create DockerDevcontainerDeployContext" )
52
+ return null
53
+ }
42
54
43
- val content = createContext(devcontainerFile, projectDir, server)
44
55
val wrapper = object : DialogWrapper (project) {
45
56
override fun createCenterPanel (): JComponent ? = BorderLayoutPanel ()
46
-
47
-
48
57
override fun beforeShowCallback () {
49
58
val panel = contentPanel
50
59
val lifetime = Lifetime .Companion .Eternal
@@ -67,8 +76,7 @@ class RunDevContainerService : RunService {
67
76
val filteredServers =
68
77
getDockerServers().filter {
69
78
it.sshId == null
70
- }.nullize()
71
- ? : listOf (createDefaultDockerServer(" Local" ))
79
+ }.nullize() ? : listOf (createDefaultDockerServer(" Local" ))
72
80
return filteredServers
73
81
}
74
82
@@ -88,27 +96,28 @@ class RunDevContainerService : RunService {
88
96
return deployContext
89
97
}
90
98
91
-
92
99
private fun createBuildData (
93
100
workingDir : File ,
94
101
modelFile : File ,
95
102
sources : File ?
96
103
): LocalBuildData {
97
104
return try {
98
- val newConstructor: java.lang.reflect.Constructor <LocalBuildData > = LocalBuildData ::class .java.getConstructor(
99
- File ::class .java,
100
- File ::class .java,
101
- Boolean ::class .javaPrimitiveType
102
- )
103
- newConstructor.newInstance(modelFile, sources ? : workingDir, true )
104
- } catch (e: NoSuchMethodException ) {
105
- val oldConstructor: java.lang.reflect.Constructor <LocalBuildData > = LocalBuildData ::class .java.getConstructor(
106
- File ::class .java,
107
- File ::class .java,
108
- File ::class .java,
109
- Boolean ::class .javaPrimitiveType
110
- )
105
+ val oldConstructor: java.lang.reflect.Constructor <LocalBuildData > =
106
+ LocalBuildData ::class .java.getConstructor(
107
+ File ::class .java,
108
+ File ::class .java,
109
+ File ::class .java,
110
+ Boolean ::class .javaPrimitiveType
111
+ )
111
112
oldConstructor.newInstance(workingDir, modelFile, sources, true )
113
+ } catch (e: NoSuchMethodException ) {
114
+ val newConstructor: java.lang.reflect.Constructor <LocalBuildData > =
115
+ LocalBuildData ::class .java.getConstructor(
116
+ File ::class .java,
117
+ File ::class .java,
118
+ Boolean ::class .javaPrimitiveType
119
+ )
120
+ newConstructor.newInstance(modelFile, sources ? : workingDir, true )
112
121
}
113
122
}
114
123
}
0 commit comments