Skip to content

Commit

Permalink
CfW: rely on exact configuration names to find the dependencies (#4828)
Browse files Browse the repository at this point in the history
  • Loading branch information
eymar committed May 17, 2024
1 parent f9585f5 commit a696138
Showing 1 changed file with 16 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import org.gradle.api.Project
import org.gradle.api.artifacts.Configuration
import org.gradle.api.artifacts.ResolvedDependency
import org.gradle.api.artifacts.UnresolvedDependency
import org.gradle.api.artifacts.component.ModuleComponentIdentifier
import org.gradle.api.provider.Provider
import org.jetbrains.compose.ComposeBuildConfig
import org.jetbrains.compose.ComposeExtension
Expand All @@ -27,20 +28,23 @@ internal fun Project.configureWeb(
// here we check all dependencies (including transitive)
// If there is compose.ui, then skiko is required!
val shouldRunUnpackSkiko = project.provider {
var dependsOnComposeUi = false
project.configurations.matching { configuration ->
val isWasmOrJs = configuration.name.contains("js", true) ||
configuration.name.contains("wasm", true)

configuration.isCanBeResolved && isWasmOrJs
}.all { configuration ->
val match = configuration.incoming.artifacts.resolvedArtifacts.get().any { artifact ->
artifact.id.componentIdentifier.toString().contains("org.jetbrains.compose.ui:ui:")
webExt.targetsToConfigure(project).any { target ->
val compilation = target.compilations.getByName("main")
val compileConfiguration = compilation.compileDependencyConfigurationName
val runtimeConfiguration = compilation.runtimeDependencyConfigurationName

listOf(compileConfiguration, runtimeConfiguration).mapNotNull { name ->
project.configurations.findByName(name)
}.flatMap { configuration ->
configuration.incoming.resolutionResult.allComponents.map { it.id }
}.any { identifier ->
if (identifier is ModuleComponentIdentifier) {
identifier.group == "org.jetbrains.compose.ui" && identifier.module == "ui"
} else {
false
}
}

dependsOnComposeUi = dependsOnComposeUi || match
}
dependsOnComposeUi
}

// configure only if there is k/wasm or k/js target:
Expand Down

0 comments on commit a696138

Please sign in to comment.