mirror of
https://github.com/tadfisher/gradle2nix.git
synced 2026-01-12 07:50:53 -05:00
Support downloading additional artifacts (sources, javadoc, etc.)
This commit is contained in:
@@ -1,37 +1,49 @@
|
||||
package org.nixos.gradle2nix
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.artifacts.Configuration
|
||||
import org.gradle.api.artifacts.component.ModuleComponentIdentifier
|
||||
import org.gradle.api.attributes.Bundling
|
||||
import org.gradle.api.attributes.DocsType
|
||||
import org.gradle.api.file.FileCollection
|
||||
import org.gradle.api.model.ObjectFactory
|
||||
import org.gradle.api.tasks.TaskAction
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
import org.gradle.internal.serialization.Cached
|
||||
import org.gradle.work.DisableCachingByDefault
|
||||
import org.nixos.gradle2nix.model.RESOLVE_PROJECT_TASK
|
||||
import javax.inject.Inject
|
||||
import org.nixos.gradle2nix.model.ArtifactType
|
||||
|
||||
object ResolveAllArtifactsApplierG8 : AbstractResolveAllArtifactsApplier() {
|
||||
override fun Project.registerProjectTask(): TaskProvider<*> =
|
||||
tasks.register(RESOLVE_PROJECT_TASK, ResolveProjectDependenciesTaskG8::class.java)
|
||||
}
|
||||
@Suppress("UnstableApiUsage")
|
||||
override fun Project.addConfigurationArtifactResolver(
|
||||
configuration: Configuration,
|
||||
artifactType: ArtifactType,
|
||||
): FileCollection {
|
||||
val result =
|
||||
configuration.incoming
|
||||
.artifactView { view ->
|
||||
view.isLenient = true
|
||||
view.withVariantReselection()
|
||||
view.componentFilter { it is ModuleComponentIdentifier }
|
||||
view.attributes { attrs ->
|
||||
with(attrs) {
|
||||
attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling::class.java, Bundling.EXTERNAL))
|
||||
attribute(
|
||||
DocsType.DOCS_TYPE_ATTRIBUTE,
|
||||
objects.named(
|
||||
DocsType::class.java,
|
||||
when (artifactType) {
|
||||
ArtifactType.DOXYGEN -> DocsType.DOXYGEN
|
||||
ArtifactType.JAVADOC -> DocsType.JAVADOC
|
||||
ArtifactType.SAMPLES -> DocsType.SAMPLES
|
||||
ArtifactType.SOURCES -> DocsType.SOURCES
|
||||
ArtifactType.USERMANUAL -> DocsType.USER_MANUAL
|
||||
},
|
||||
),
|
||||
)
|
||||
}
|
||||
}
|
||||
}.files
|
||||
|
||||
@DisableCachingByDefault(because = "Not worth caching")
|
||||
abstract class ResolveProjectDependenciesTaskG8
|
||||
@Inject
|
||||
constructor(
|
||||
private val objects: ObjectFactory,
|
||||
) : ResolveProjectDependenciesTask() {
|
||||
private val artifactFiles = Cached.of { artifactFiles() }
|
||||
|
||||
private fun artifactFiles(): FileCollection =
|
||||
objects.fileCollection().from(
|
||||
getReportableConfigurations().map { configuration ->
|
||||
configuration.artifactFiles()
|
||||
},
|
||||
)
|
||||
|
||||
@TaskAction
|
||||
fun action() {
|
||||
artifactFiles.get().count()
|
||||
configuration.incoming.afterResolve {
|
||||
result.files.count()
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user