@@ -6,7 +6,12 @@ import cc.unitmesh.devti.template.context.DockerfileContext
6
6
import com.goide.vgo.mod.psi.VgoModuleSpec
7
7
import com.goide.vgo.mod.psi.VgoRequireDirective
8
8
import com.goide.vgo.project.VgoDependency
9
+ import com.goide.vgo.project.VgoModulesRegistry
10
+ import com.intellij.openapi.actionSystem.DataContext
11
+ import com.intellij.openapi.module.ModuleManager
12
+ import com.intellij.openapi.progress.ProgressManager
9
13
import com.intellij.openapi.project.Project
14
+ import com.intellij.openapi.vfs.VirtualFile
10
15
import com.intellij.psi.PsiFile
11
16
import com.intellij.psi.util.PsiTreeUtil
12
17
@@ -24,6 +29,37 @@ class GoBuildSystemProvider : BuildSystemProvider() {
24
29
.toList()
25
30
}
26
31
32
+
33
+ fun getAllModules (project : Project ): Iterable <DevModuleModel > {
34
+ val result = mutableListOf<DevModuleModel >()
35
+
36
+ ModuleManager .getInstance(project).modules.forEach { module ->
37
+ ProgressManager .checkCanceled()
38
+ VgoModulesRegistry .getInstance(project).getModules(module).forEach { vgoModule ->
39
+ val dependencies = vgoModule.dependencies.mapNotNull { vgoDependency ->
40
+ toPackage(vgoDependency)
41
+ }.toSet()
42
+
43
+ val importPath = vgoModule.importPath
44
+ val buildFile = vgoModule.root.findChild(" go.mod" )
45
+ val moduleModel = DevModuleModel (importPath, module, buildFile, dependencies, project)
46
+ result.add(moduleModel)
47
+ }
48
+ }
49
+
50
+ return result
51
+ }
52
+
53
+ data class DevModuleModel (
54
+ val id : String ,
55
+ val platformModule : com.intellij.openapi.module.Module ? ,
56
+ val buildFile : VirtualFile ? ,
57
+ var dependencies : Set <DevPackage >,
58
+ val project : Project ,
59
+ val dataContext : DataContext ? = null ,
60
+ val parentModuleName : String? = null
61
+ )
62
+
27
63
fun getDependencies (modFile : PsiFile ): List <VgoModuleSpec > {
28
64
return PsiTreeUtil .getChildrenOfTypeAsList(modFile, VgoRequireDirective ::class .java)
29
65
.flatMap { requireDirective ->
0 commit comments