Skip to content

Commit

Permalink
[fix] Adding available sources to libraries for workspace/libraries call
Browse files Browse the repository at this point in the history
Merge-request: BAZEL-MR-476
Merged-by: Blazej Kardys <Blazej.Kardys@jetbrains.com>
  • Loading branch information
sellophane authored and Space Team committed Aug 29, 2023
1 parent 6d11bde commit 2e17ea0
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 16 deletions.
Expand Up @@ -7,7 +7,8 @@ import java.util.concurrent.CompletableFuture
data class LibraryItem(
val id: BuildTargetIdentifier,
val dependencies: List<BuildTargetIdentifier>,
val jars: List<String>
val jars: List<String>,
val sourceJars: List<String>,
)

data class WorkspaceLibrariesResult(
Expand Down
Expand Up @@ -62,12 +62,13 @@ class BazelProjectMapper(
.associate { targetInfo ->
targetInfo.id to
Library(
targetInfo.id + "_generated",
targetInfo.javaTargetInfo.generatedJarsList
label = targetInfo.id + "_generated",
outputs = targetInfo.javaTargetInfo.generatedJarsList
.flatMap { it.binaryJarsList }
.map { bazelPathsResolver.resolveUri(it) }
.toSet(),
emptyList()
sources = emptySet(),
dependencies = emptyList(),
)
}
.map { it.key to listOf(it.value) }
Expand All @@ -91,7 +92,8 @@ class BazelProjectMapper(
.filter { it.isKotlinStdlibPath() }
.map { bazelPathsResolver.resolveUri(it) }
.toSet(),
dependencies = emptyList()
sources = emptySet(),
dependencies = emptyList(),
)

private fun FileLocation.isKotlinStdlibPath() =
Expand All @@ -104,18 +106,26 @@ class BazelProjectMapper(
val targetId = entry.key
val targetInfo = entry.value
Library(
targetId,
getTargetJarUris(targetInfo),
targetInfo.dependenciesList.map { it.id }
label = targetId,
outputs = getTargetJarUris(targetInfo),
sources = getSourceJarUris(targetInfo),
dependencies = targetInfo.dependenciesList.map { it.id },
)
}
}

private fun List<FileLocation>.resolveUris() =
map { bazelPathsResolver.resolve(it).toUri() }.toSet()

private fun getTargetJarUris(targetInfo: TargetInfo) =
targetInfo.javaTargetInfo.jarsList
.flatMap { it.binaryJarsList }
.map { bazelPathsResolver.resolve(it).toUri() }
.toSet()
.resolveUris()

private fun getSourceJarUris(targetInfo: TargetInfo) =
targetInfo.javaTargetInfo.jarsList
.flatMap { it.sourceJarsList }
.resolveUris()

private fun selectTargetsToImport(
workspaceContext: WorkspaceContext, rootTargets: Set<String>, tree: DependencyTree
Expand Down
Expand Up @@ -87,11 +87,14 @@ class BspProjectMapper(
}

fun workspaceLibraries(project: Project): WorkspaceLibrariesResult {
val libraries = project.libraries.values.map { LibraryItem(
BuildTargetIdentifier(it.label),
it.dependencies.map { dep -> BuildTargetIdentifier(dep) },
it.outputs.map { uri -> uri.toString() }
) }
val libraries = project.libraries.values.map {
LibraryItem(
id = BuildTargetIdentifier(it.label),
dependencies = it.dependencies.map { dep -> BuildTargetIdentifier(dep) },
jars = it.outputs.map { uri -> uri.toString() },
sourceJars = it.sources.map { uri -> uri.toString() },
)
}
return WorkspaceLibrariesResult(libraries)
}

Expand Down
Expand Up @@ -5,5 +5,6 @@ import java.net.URI
data class Library(
val label: String,
val outputs: Set<URI>,
val dependencies: List<String>
val sources: Set<URI>,
val dependencies: List<String>,
)

0 comments on commit 2e17ea0

Please sign in to comment.