Skip to content

Commit 685c5c4

Browse files
authored
Filter out the attributes on our side to avoid missing attributes to pollute resolution results (#227)
1 parent 72debaa commit 685c5c4

2 files changed

Lines changed: 31 additions & 10 deletions

File tree

nmcp/src/main/kotlin/nmcp/internal/DefaultNmcpAggregationExtension.kt

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,18 @@ import nmcp.NmcpAggregationExtension
77
import nmcp.nmcpAggregationExtensionName
88
import org.gradle.api.Action
99
import org.gradle.api.Project
10+
import org.gradle.api.artifacts.result.ArtifactResult
11+
import org.gradle.api.artifacts.result.ResolvedArtifactResult
12+
import org.gradle.api.attributes.Usage
13+
import org.gradle.api.file.ConfigurableFileCollection
1014
import org.gradle.api.file.FileCollection
15+
import org.gradle.api.file.RegularFileProperty
1116

12-
@GExtension(pluginId = "com.gradleup.nmcp.aggregation", publicType = NmcpAggregationExtension::class, extensionName = nmcpAggregationExtensionName)
17+
@GExtension(
18+
pluginId = "com.gradleup.nmcp.aggregation",
19+
publicType = NmcpAggregationExtension::class,
20+
extensionName = nmcpAggregationExtensionName,
21+
)
1322
internal abstract class DefaultNmcpAggregationExtension(private val project: Project) : NmcpAggregationExtension {
1423
private val spec = project.objects.newInstance(CentralPortalOptions::class.java)
1524

@@ -20,16 +29,26 @@ internal abstract class DefaultNmcpAggregationExtension(private val project: Pro
2029
it.configureAttributes(project)
2130
}
2231

23-
override val allFiles: FileCollection = consumerConfiguration.incoming.artifactView { it.lenient(true) }.files.asFileTree
32+
override val allFiles: ConfigurableFileCollection = project.files()
2433

2534
init {
26-
35+
allFiles.from(
36+
consumerConfiguration
37+
.incoming
38+
.artifactView { it.lenient(true) }
39+
.artifacts
40+
.resolvedArtifacts
41+
.map {
42+
it.filter(::isCompatible).map { it.file }
43+
},
44+
)
2745
project.registerPublishToCentralPortalTasks(
2846
kind = Kind.aggregation,
2947
inputFiles = allFiles,
30-
spec = spec
48+
spec = spec,
3149
)
3250
}
51+
3352
override fun centralPortal(action: Action<CentralPortalOptions>) {
3453
action.execute(spec)
3554
}
@@ -49,3 +68,11 @@ internal abstract class DefaultNmcpAggregationExtension(private val project: Pro
4968
}
5069
}
5170
}
71+
72+
private fun isCompatible(artifactResult: ArtifactResult): Boolean {
73+
if (artifactResult !is ResolvedArtifactResult) {
74+
return false
75+
}
76+
val usage = artifactResult.variant.attributes.getAttribute(Usage.USAGE_ATTRIBUTE)
77+
return usage?.name == usageValue
78+
}

nmcp/src/main/kotlin/nmcp/internal/utils.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,10 @@ internal fun Project.withRequiredPlugin(id: String, block: () -> Unit) {
3737

3838
internal val nmcpConsumerConfigurationName = "nmcpAggregation"
3939
internal val nmcpProducerConfigurationName = "nmcpProducer"
40-
internal val attribute = "com.gradleup.nmcp"
41-
internal val attributeValue = "bundle"
4240
internal val usageValue = "nmcp"
4341

4442
internal fun HasConfigurableAttributes<*>.configureAttributes(project: Project) {
4543
attributes {
46-
it.attribute(
47-
Attribute.of(attribute, Named::class.java),
48-
project.objects.named(Named::class.java, attributeValue),
49-
)
5044
it.attribute(USAGE_ATTRIBUTE, project.objects.named(Usage::class.java, usageValue))
5145
}
5246
}

0 commit comments

Comments
 (0)