
com.dropbox.gradle.plugins.dependencyguard.internal.DependencyVisitor.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of dependency-guard Show documentation
Show all versions of dependency-guard Show documentation
A Gradle plugin that helps protect against unintentional transitive dependency changes.
The newest version!
package com.dropbox.gradle.plugins.dependencyguard.internal
import com.dropbox.gradle.plugins.dependencyguard.models.ArtifactDependency
import com.dropbox.gradle.plugins.dependencyguard.models.Dependency
import com.dropbox.gradle.plugins.dependencyguard.models.ModuleDependency
import org.gradle.api.artifacts.component.ModuleComponentIdentifier
import org.gradle.api.artifacts.component.ProjectComponentIdentifier
import org.gradle.api.artifacts.result.ResolvedComponentResult
import org.gradle.api.artifacts.result.ResolvedDependencyResult
internal object DependencyVisitor {
private fun ResolvedDependencyResult.toDep(): Dependency? {
return when (val componentIdentifier = selected.id) {
is ProjectComponentIdentifier -> ModuleDependency(
path = componentIdentifier.projectPath,
)
is ModuleComponentIdentifier -> {
ArtifactDependency(
group = componentIdentifier.group,
artifact = componentIdentifier.module,
version = componentIdentifier.version,
)
}
else -> {
null
}
}
}
private fun visit(
reportData: MutableList,
resolvedDependencyResults: Collection
) {
for (resolvedDependencyResult: ResolvedDependencyResult in resolvedDependencyResults) {
resolvedDependencyResult.toDep()
?.let { dep: Dependency ->
if (!reportData.contains(dep)) {
reportData.add(dep)
visit(
reportData = reportData,
resolvedDependencyResults = resolvedDependencyResult
.selected
.dependencies
.filterIsInstance()
)
}
}
}
}
fun traverseComponentDependencies(resolvedComponentResult: ResolvedComponentResult): List {
val firstLevelDependencies = resolvedComponentResult
.dependencies
.filterIsInstance()
val dependencies = mutableListOf()
visit(dependencies, firstLevelDependencies)
return dependencies
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy