mirror of
https://github.com/tadfisher/gradle2nix.git
synced 2026-01-12 07:50:53 -05:00
plugin: Support repositories in dependencyResolutionManagement block
This commit is contained in:
@@ -35,7 +35,7 @@ enum class ConfigurationScope {
|
||||
internal class ConfigurationResolverFactory(
|
||||
project: Project,
|
||||
scope: ConfigurationScope,
|
||||
repositories: RepositoryHandler
|
||||
repositories: List<ResolutionAwareRepository>
|
||||
) {
|
||||
private val ivySettings = IvySettings().apply {
|
||||
defaultInit()
|
||||
@@ -49,7 +49,6 @@ internal class ConfigurationResolverFactory(
|
||||
}
|
||||
|
||||
private val resolvers = repositories
|
||||
.filterIsInstance<ResolutionAwareRepository>()
|
||||
.filterNot { it.createResolver().isLocal }
|
||||
.mapNotNull { it.repositoryResolver(project, scope, ivySettings) }
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ import org.gradle.api.Task
|
||||
import org.gradle.api.artifacts.Configuration
|
||||
import org.gradle.api.artifacts.ProjectDependency
|
||||
import org.gradle.api.internal.GradleInternal
|
||||
import org.gradle.api.internal.artifacts.repositories.ResolutionAwareRepository
|
||||
import org.gradle.api.invocation.Gradle
|
||||
import org.gradle.api.tasks.TaskContainer
|
||||
import org.gradle.api.tasks.wrapper.Wrapper
|
||||
@@ -132,7 +133,11 @@ private fun Project.buildGradle(): DefaultGradle =
|
||||
private fun Project.settingsDependencies(): List<DefaultArtifact> {
|
||||
val buildscript = (gradle as GradleInternal).settings.buildscript
|
||||
|
||||
val resolverFactory = ConfigurationResolverFactory(this, ConfigurationScope.SETTINGS, buildscript.repositories)
|
||||
val resolverFactory = ConfigurationResolverFactory(
|
||||
this,
|
||||
ConfigurationScope.SETTINGS,
|
||||
buildscript.repositories.filterIsInstance<ResolutionAwareRepository>()
|
||||
)
|
||||
val resolver = resolverFactory.create(buildscript.dependencies)
|
||||
|
||||
logger.lifecycle(" Settings script")
|
||||
@@ -208,7 +213,11 @@ private fun Project.buildProject(
|
||||
private fun Project.buildscriptDependencies(
|
||||
pluginArtifacts: List<DefaultArtifact>
|
||||
): Pair<List<DefaultArtifact>, List<ArtifactIdentifier>> {
|
||||
val resolverFactory = ConfigurationResolverFactory(this, ConfigurationScope.BUILDSCRIPT, buildscript.repositories)
|
||||
val resolverFactory = ConfigurationResolverFactory(
|
||||
this,
|
||||
ConfigurationScope.BUILDSCRIPT,
|
||||
buildscript.repositories.filterIsInstance<ResolutionAwareRepository>()
|
||||
)
|
||||
val resolver = resolverFactory.create(buildscript.dependencies)
|
||||
val pluginIds = pluginArtifacts.map(DefaultArtifact::id)
|
||||
return buildscript.configurations
|
||||
@@ -221,8 +230,11 @@ private fun Project.buildscriptDependencies(
|
||||
private fun Project.projectDependencies(
|
||||
explicitConfigurations: List<String>
|
||||
): Pair<List<DefaultArtifact>, List<ArtifactIdentifier>> {
|
||||
val resolverFactory = ConfigurationResolverFactory(this, ConfigurationScope.PROJECT, repositories)
|
||||
val resolver = resolverFactory.create(dependencies)
|
||||
val resolver = ConfigurationResolverFactory(
|
||||
this,
|
||||
ConfigurationScope.PROJECT,
|
||||
RepositoriesCollector.create(project).collectRepositories()
|
||||
).create(dependencies)
|
||||
return collectConfigurations(explicitConfigurations)
|
||||
.flatMap(resolver::resolve)
|
||||
.distinct()
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.nixos.gradle2nix
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.internal.artifacts.repositories.ResolutionAwareRepository
|
||||
import org.gradle.plugin.management.PluginRequest
|
||||
import org.gradle.plugin.use.internal.PluginDependencyResolutionServices
|
||||
import javax.inject.Inject
|
||||
@@ -14,7 +15,7 @@ internal open class PluginResolver @Inject constructor(
|
||||
private val resolver = ConfigurationResolverFactory(
|
||||
project,
|
||||
ConfigurationScope.PLUGIN,
|
||||
pluginDependencyResolutionServices.resolveRepositoryHandler
|
||||
pluginDependencyResolutionServices.resolveRepositoryHandler.filterIsInstance<ResolutionAwareRepository>()
|
||||
).create(pluginDependencyResolutionServices.dependencyHandler)
|
||||
|
||||
fun resolve(pluginRequests: List<PluginRequest>): List<DefaultArtifact> {
|
||||
@@ -28,4 +29,3 @@ internal open class PluginResolver @Inject constructor(
|
||||
return resolver.resolve(configurations.detachedConfiguration(*markerDependencies.toTypedArray()))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
package org.nixos.gradle2nix
|
||||
|
||||
import org.gradle.api.internal.artifacts.repositories.ResolutionAwareRepository
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.artifacts.dsl.RepositoryHandler
|
||||
import org.gradle.api.initialization.dsl.ScriptHandler
|
||||
import org.gradle.api.internal.artifacts.RepositoriesSupplier
|
||||
import org.gradle.kotlin.dsl.newInstance
|
||||
import org.gradle.util.GradleVersion
|
||||
import javax.inject.Inject
|
||||
|
||||
interface RepositoriesCollector {
|
||||
fun collectRepositories(): List<ResolutionAwareRepository>
|
||||
|
||||
companion object {
|
||||
fun create(project: Project): RepositoriesCollector =
|
||||
if (GradleVersion.current() >= GradleVersion.version("6.8")) {
|
||||
project.objects.newInstance<RepositoriesCollector68>()
|
||||
} else {
|
||||
project.objects.newInstance<RepositoriesCollectorBase>()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
open class RepositoriesCollectorBase @Inject constructor(
|
||||
private val repositories: RepositoryHandler
|
||||
): RepositoriesCollector {
|
||||
override fun collectRepositories(): List<ResolutionAwareRepository> =
|
||||
repositories.filterIsInstance<ResolutionAwareRepository>()
|
||||
}
|
||||
|
||||
open class RepositoriesCollector68 @Inject constructor(
|
||||
private val repositoriesSupplier: RepositoriesSupplier
|
||||
): RepositoriesCollector {
|
||||
override fun collectRepositories(): List<ResolutionAwareRepository> =
|
||||
repositoriesSupplier.get()
|
||||
}
|
||||
Reference in New Issue
Block a user