Skip to content

Commit 88654aa

Browse files
committed
feat(container): enhance Dockerfile service with Docker connection support #306
Integrate Docker connection functionality in `RunDockerfileService` using `DockerServerRuntimesManager` and `RemoteServerImpl`. Add coroutine-based runtime management and invoke actions via `ApplicationManager`. Update test source directories for specific platform versions.
1 parent b1a53d3 commit 88654aa

File tree

2 files changed

+31
-3
lines changed

2 files changed

+31
-3
lines changed

build.gradle.kts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,9 @@ configure(subprojects - project(":exts")) {
136136
kotlin.srcDirs("src/$platformVersion/main/kotlin")
137137
}
138138
test {
139+
if (platformVersion == 241 || platformVersion == 243) {
140+
kotlin.srcDirs("src/233/test/kotlin")
141+
}
139142
kotlin.srcDirs("src/$platformVersion/test/kotlin")
140143
}
141144
}
Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,46 @@
11
package cc.unitmesh.container
22

33
import cc.unitmesh.devti.provider.RunService
4+
import com.intellij.docker.DockerCloudConfiguration
5+
import com.intellij.docker.DockerCloudType
6+
import com.intellij.docker.DockerServerRuntimesManager
47
import com.intellij.docker.dockerFile.DockerLanguage
58
import com.intellij.execution.configurations.RunProfile
9+
import com.intellij.openapi.application.ApplicationManager
10+
import com.intellij.openapi.application.runReadAction
611
import com.intellij.openapi.project.Project
712
import com.intellij.openapi.vfs.VirtualFile
813
import com.intellij.psi.PsiElement
14+
import com.intellij.psi.PsiManager
15+
import com.intellij.remoteServer.impl.configuration.RemoteServerImpl
16+
import kotlinx.coroutines.future.await
17+
import kotlinx.coroutines.runBlocking
18+
import java.awt.EventQueue.invokeAndWait
919

1020
class RunDockerfileService : RunService {
11-
override fun isApplicable(project: Project, file: VirtualFile): Boolean = file.name == "Dockerfile"
1221

13-
fun isApplicable(element: PsiElement) = element.containingFile?.language == DockerLanguage.INSTANCE
22+
override fun isApplicable(project: Project, file: VirtualFile): Boolean = file.name == "Dockerfile" ||
23+
runReadAction { PsiManager.getInstance(project).findFile(file)?.language == DockerLanguage.INSTANCE }
1424

1525
override fun runConfigurationClass(project: Project): Class<out RunProfile>? = null
1626

27+
fun defaultDockerConnection() =
28+
RemoteServerImpl("DockerConnection", DockerCloudType.getInstance(), DockerCloudConfiguration.createDefault())
29+
1730
override fun runFile(project: Project, virtualFile: VirtualFile, psiElement: PsiElement?, isFromToolAction: Boolean)
1831
: String? {
19-
return super.runFile(project, virtualFile, psiElement, isFromToolAction)
32+
33+
ApplicationManager.getApplication().invokeAndWait {
34+
runBlocking {
35+
val runtime = DockerServerRuntimesManager.getInstance(project)
36+
.getOrCreateConnection(defaultDockerConnection())
37+
.await()
38+
39+
// runtime.runtimesManager
40+
}
41+
}
42+
43+
44+
return null
2045
}
2146
}

0 commit comments

Comments
 (0)