-
Notifications
You must be signed in to change notification settings - Fork 46
/
ProjectSyncService.kt
174 lines (149 loc) · 7.16 KB
/
ProjectSyncService.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
package org.jetbrains.bsp.bazel.server.sync
import ch.epfl.scala.bsp4j.CppOptionsParams
import ch.epfl.scala.bsp4j.CppOptionsResult
import ch.epfl.scala.bsp4j.DependencyModulesParams
import ch.epfl.scala.bsp4j.DependencyModulesResult
import ch.epfl.scala.bsp4j.DependencySourcesParams
import ch.epfl.scala.bsp4j.DependencySourcesResult
import ch.epfl.scala.bsp4j.InitializeBuildResult
import ch.epfl.scala.bsp4j.InverseSourcesParams
import ch.epfl.scala.bsp4j.InverseSourcesResult
import ch.epfl.scala.bsp4j.JavacOptionsParams
import ch.epfl.scala.bsp4j.JavacOptionsResult
import ch.epfl.scala.bsp4j.JvmCompileClasspathParams
import ch.epfl.scala.bsp4j.JvmCompileClasspathResult
import ch.epfl.scala.bsp4j.JvmRunEnvironmentParams
import ch.epfl.scala.bsp4j.JvmRunEnvironmentResult
import ch.epfl.scala.bsp4j.JvmTestEnvironmentParams
import ch.epfl.scala.bsp4j.JvmTestEnvironmentResult
import ch.epfl.scala.bsp4j.OutputPathsParams
import ch.epfl.scala.bsp4j.OutputPathsResult
import ch.epfl.scala.bsp4j.PythonOptionsParams
import ch.epfl.scala.bsp4j.PythonOptionsResult
import ch.epfl.scala.bsp4j.ResourcesParams
import ch.epfl.scala.bsp4j.ResourcesResult
import ch.epfl.scala.bsp4j.RustWorkspaceParams
import ch.epfl.scala.bsp4j.RustWorkspaceResult
import ch.epfl.scala.bsp4j.ScalaMainClassesParams
import ch.epfl.scala.bsp4j.ScalaMainClassesResult
import ch.epfl.scala.bsp4j.ScalaTestClassesParams
import ch.epfl.scala.bsp4j.ScalaTestClassesResult
import ch.epfl.scala.bsp4j.ScalacOptionsParams
import ch.epfl.scala.bsp4j.ScalacOptionsResult
import ch.epfl.scala.bsp4j.SourcesParams
import ch.epfl.scala.bsp4j.SourcesResult
import ch.epfl.scala.bsp4j.WorkspaceBuildTargetsResult
import org.eclipse.lsp4j.jsonrpc.CancelChecker
import org.jetbrains.bsp.WorkspaceDirectoriesResult
import org.jetbrains.bsp.WorkspaceInvalidTargetsResult
import org.jetbrains.bsp.WorkspaceLibrariesResult
import org.jetbrains.bsp.bazel.server.sync.model.Language
/** A facade for all project sync related methods */
class ProjectSyncService(private val bspMapper: BspProjectMapper, private val projectProvider: ProjectProvider) {
fun initialize(cancelChecker: CancelChecker): InitializeBuildResult =
bspMapper.initializeServer(Language.all())
// TODO https://youtrack.jetbrains.com/issue/BAZEL-639
// We might consider doing the actual project reload in this endpoint
// i.e. just run projectProvider.refreshAndGet() and in workspaceBuildTargets
// just run projectProvider.get() although current approach seems to work
// correctly, so I am not changing anything.
fun workspaceReload(cancelChecker: CancelChecker): Any = Any()
fun workspaceBuildTargets(cancelChecker: CancelChecker): WorkspaceBuildTargetsResult {
val project = projectProvider.refreshAndGet(cancelChecker)
return bspMapper.workspaceTargets(project)
}
fun workspaceBuildLibraries(cancelChecker: CancelChecker): WorkspaceLibrariesResult {
val project = projectProvider.get(cancelChecker)
return bspMapper.workspaceLibraries(project)
}
fun workspaceDirectories(cancelChecker: CancelChecker): WorkspaceDirectoriesResult {
val project = projectProvider.get(cancelChecker)
return bspMapper.workspaceDirectories(project)
}
fun workspaceInvalidTargets(cancelChecker: CancelChecker): WorkspaceInvalidTargetsResult {
val project = projectProvider.get(cancelChecker)
return bspMapper.workspaceInvalidTargets(project)
}
fun buildTargetSources(cancelChecker: CancelChecker, sourcesParams: SourcesParams): SourcesResult {
val project = projectProvider.get(cancelChecker)
return bspMapper.sources(project, sourcesParams)
}
fun buildTargetResources(cancelChecker: CancelChecker, resourcesParams: ResourcesParams): ResourcesResult {
val project = projectProvider.get(cancelChecker)
return bspMapper.resources(project, resourcesParams)
}
fun buildTargetInverseSources(
cancelChecker: CancelChecker,
inverseSourcesParams: InverseSourcesParams
): InverseSourcesResult {
val project = projectProvider.get(cancelChecker)
return bspMapper.inverseSources(project, inverseSourcesParams, cancelChecker)
}
fun buildTargetDependencySources(
cancelChecker: CancelChecker,
dependencySourcesParams: DependencySourcesParams
): DependencySourcesResult {
val project = projectProvider.get(cancelChecker)
return bspMapper.dependencySources(project, dependencySourcesParams)
}
fun buildTargetOutputPaths(cancelChecker: CancelChecker, params: OutputPathsParams): OutputPathsResult {
val project = projectProvider.get(cancelChecker)
return bspMapper.outputPaths(project, params)
}
fun jvmRunEnvironment(cancelChecker: CancelChecker, params: JvmRunEnvironmentParams): JvmRunEnvironmentResult {
val project = projectProvider.get(cancelChecker)
return bspMapper.jvmRunEnvironment(project, params, cancelChecker)
}
fun jvmTestEnvironment(cancelChecker: CancelChecker, params: JvmTestEnvironmentParams): JvmTestEnvironmentResult {
val project = projectProvider.get(cancelChecker)
return bspMapper.jvmTestEnvironment(project, params, cancelChecker)
}
fun jvmCompileClasspath(cancelChecker: CancelChecker, params: JvmCompileClasspathParams): JvmCompileClasspathResult {
val project = projectProvider.get(cancelChecker)
return bspMapper.jvmCompileClasspath(project, params, cancelChecker)
}
fun buildTargetJavacOptions(cancelChecker: CancelChecker, params: JavacOptionsParams): JavacOptionsResult {
val project = projectProvider.get(cancelChecker)
return bspMapper.buildTargetJavacOptions(project, params, cancelChecker)
}
fun buildTargetCppOptions(cancelChecker: CancelChecker, params: CppOptionsParams): CppOptionsResult {
val project = projectProvider.get(cancelChecker)
return bspMapper.buildTargetCppOptions(project, params)
}
fun buildTargetPythonOptions(cancelChecker: CancelChecker, params: PythonOptionsParams): PythonOptionsResult {
val project = projectProvider.get(cancelChecker)
return bspMapper.buildTargetPythonOptions(project, params)
}
fun buildTargetScalacOptions(cancelChecker: CancelChecker, params: ScalacOptionsParams): ScalacOptionsResult {
val project = projectProvider.get(cancelChecker)
return bspMapper.buildTargetScalacOptions(project, params, cancelChecker)
}
fun buildTargetScalaTestClasses(
cancelChecker: CancelChecker,
params: ScalaTestClassesParams
): ScalaTestClassesResult {
val project = projectProvider.get(cancelChecker)
return bspMapper.buildTargetScalaTestClasses(project, params)
}
fun buildTargetScalaMainClasses(
cancelChecker: CancelChecker,
params: ScalaMainClassesParams
): ScalaMainClassesResult {
val project = projectProvider.get(cancelChecker)
return bspMapper.buildTargetScalaMainClasses(project, params)
}
fun buildTargetDependencyModules(
cancelChecker: CancelChecker,
params: DependencyModulesParams
): DependencyModulesResult {
// TODO https://youtrack.jetbrains.com/issue/BAZEL-616
return DependencyModulesResult(emptyList())
}
fun rustWorkspace(
cancelChecker: CancelChecker,
params: RustWorkspaceParams
): RustWorkspaceResult {
val project = projectProvider.get(cancelChecker)
return bspMapper.rustWorkspace(project, params)
}
}