@@ -130,6 +130,7 @@ final class BloopBspServices(
130130 .requestAsync(endpoints.BuildTarget .sources)(p => schedule(sources(p)))
131131 .requestAsync(endpoints.BuildTarget .inverseSources)(p => schedule(inverseSources(p)))
132132 .requestAsync(endpoints.BuildTarget .resources)(p => schedule(resources(p)))
133+ .requestAsync(endpoints.BuildTarget .outputPaths)(p => schedule(outputPaths(p)))
133134 .requestAsync(endpoints.BuildTarget .scalacOptions)(p => schedule(scalacOptions(p)))
134135 .requestAsync(endpoints.BuildTarget .javacOptions)(p => schedule(javacOptions(p)))
135136 .requestAsync(endpoints.BuildTarget .compile)(p => schedule(compile(p)))
@@ -311,7 +312,7 @@ final class BloopBspServices(
311312 dependencySourcesProvider = Some (true ),
312313 dependencyModulesProvider = Some (true ),
313314 resourcesProvider = Some (true ),
314- outputPathsProvider = None ,
315+ outputPathsProvider = Some ( true ) ,
315316 buildTargetChangedProvider = Some (false ),
316317 jvmTestEnvironmentProvider = Some (true ),
317318 jvmRunEnvironmentProvider = Some (true ),
@@ -1204,6 +1205,39 @@ final class BloopBspServices(
12041205 }
12051206 }
12061207
1208+ def outputPaths (
1209+ request : bsp.OutputPathsParams
1210+ ): BspEndpointResponse [bsp.OutputPathsResult ] = {
1211+ def outputPaths (
1212+ projects : Seq [ProjectMapping ],
1213+ state : State
1214+ ): BspResult [bsp.OutputPathsResult ] = {
1215+
1216+ val response = bsp.OutputPathsResult (
1217+ projects.iterator.map {
1218+ case (target, project) =>
1219+ val outputPathItems =
1220+ List (
1221+ bsp.OutputPathItem (bsp.Uri (project.out.toBspUri), bsp.OutputPathItemKind .Directory )
1222+ )
1223+ bsp.OutputPathsItem (target, outputPathItems)
1224+ }.toList
1225+ )
1226+
1227+ Task .now((state, Right (response)))
1228+ }
1229+
1230+ ifInitialized(None ) { (state : State , logger : BspServerLogger ) =>
1231+ mapToProjects(request.targets, state) match {
1232+ case Left (error) =>
1233+ // Log the mapping error to the user via a log event + an error status code
1234+ logger.error(error)
1235+ Task .now((state, Right (bsp.OutputPathsResult (Nil ))))
1236+ case Right (mappings) => outputPaths(mappings, state)
1237+ }
1238+ }
1239+ }
1240+
12071241 def dependencyModules (
12081242 request : bsp.DependencyModulesParams
12091243 ): BspEndpointResponse [bsp.DependencyModulesResult ] = {
0 commit comments