mirror of
https://github.com/tadfisher/gradle2nix.git
synced 2026-01-12 07:50:53 -05:00
Resolve and apply settings buildscript dependencies
This commit is contained in:
@@ -28,7 +28,8 @@ import org.gradle.util.GradleVersion
|
||||
enum class ConfigurationScope {
|
||||
BUILDSCRIPT,
|
||||
PLUGIN,
|
||||
PROJECT
|
||||
PROJECT,
|
||||
SETTINGS
|
||||
}
|
||||
|
||||
internal class ConfigurationResolverFactory(
|
||||
|
||||
@@ -6,6 +6,7 @@ import org.gradle.api.Project
|
||||
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.invocation.Gradle
|
||||
import org.gradle.api.tasks.TaskContainer
|
||||
import org.gradle.api.tasks.wrapper.Wrapper
|
||||
@@ -85,6 +86,7 @@ private fun Project.buildModel(
|
||||
modelProperties: ModelProperties,
|
||||
pluginRequests: List<PluginRequest>
|
||||
): DefaultBuild {
|
||||
val settingsDependencies = settingsDependencies()
|
||||
val plugins = buildPlugins(pluginRequests)
|
||||
|
||||
val subprojects = if (modelProperties.subprojects.isEmpty()) {
|
||||
@@ -99,6 +101,7 @@ private fun Project.buildModel(
|
||||
|
||||
return DefaultBuild(
|
||||
gradle = buildGradle(),
|
||||
settingsDependencies = settingsDependencies,
|
||||
pluginDependencies = plugins,
|
||||
rootProject = buildProject(modelProperties.configurations, subprojects, plugins),
|
||||
includedBuilds = includedBuilds()
|
||||
@@ -126,6 +129,31 @@ 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 resolver = resolverFactory.create(buildscript.dependencies)
|
||||
|
||||
logger.lifecycle(" Settings script")
|
||||
|
||||
val dependencies = buildscript.configurations
|
||||
.flatMap(resolver::resolve)
|
||||
.distinct()
|
||||
.sorted()
|
||||
|
||||
if (resolver.unresolved.isNotEmpty()) {
|
||||
logger.warn(buildString {
|
||||
append(" Failed to resolve settings script dependencies:\n")
|
||||
for (id in resolver.unresolved) {
|
||||
append(" - $id\n")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
return dependencies
|
||||
}
|
||||
|
||||
private fun Project.buildPlugins(pluginRequests: List<PluginRequest>): List<DefaultArtifact> {
|
||||
return objects.newInstance<PluginResolver>(this).resolve(pluginRequests).distinct().sorted()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user