@@ -7,9 +7,18 @@ import nmcp.NmcpAggregationExtension
77import nmcp.nmcpAggregationExtensionName
88import org.gradle.api.Action
99import 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
1014import 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+ )
1322internal 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+ }
0 commit comments