Skip to content

Commit ca6216e

Browse files
authored
Improve CheckHeadDependencies check (#4863)
* Improve CheckHeadDependencies error reporting. Error now includes the sdk that's pulling the dependency. * Add support for ignored dependencies
1 parent 73db13a commit ca6216e

File tree

1 file changed

+27
-12
lines changed

1 file changed

+27
-12
lines changed

buildSrc/src/main/java/com/google/firebase/gradle/plugins/CheckHeadDependencies.kt

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,24 +29,39 @@ abstract class CheckHeadDependencies : DefaultTask() {
2929
@TaskAction
3030
fun run() {
3131
val projectsReleasing: Set<String> = projectsToPublish.get().map { it.artifactId.get() }.toSet()
32-
val projectsToRelease =
32+
val errors =
3333
projectsToPublish
3434
.get()
35-
.flatMap {
36-
it.project.configurations
37-
.getByName(it.runtimeClasspath)
38-
.allDependencies
39-
.filter { it is ProjectDependency }
40-
.map { it.name }
41-
.toSet()
35+
.associate {
36+
it.artifactId.get() to
37+
it
38+
.projectDependenciesByName()
39+
.intersect(allFirebaseProjects.get())
40+
.subtract(projectsReleasing)
41+
.subtract(DEPENDENCIES_TO_IGNORE)
4242
}
43-
.intersect(allFirebaseProjects.get())
44-
.subtract(projectsReleasing)
43+
.filterValues { it.isNotEmpty() }
44+
.map { "${it.key} requires: ${it.value.joinToString(", ") }" }
4545

46-
if (projectsToRelease.isNotEmpty()) {
46+
if (errors.isNotEmpty()) {
4747
throw GradleException(
48-
"Following Sdks have to release as well. Please update the release config.\n${projectsToRelease.joinToString("\n")}"
48+
"Project-level dependency errors found. Please update the release config.\n${
49+
errors.joinToString(
50+
"\n"
51+
)
52+
}"
4953
)
5054
}
5155
}
56+
57+
fun FirebaseLibraryExtension.projectDependenciesByName(): List<String> =
58+
project.configurations
59+
.getByName(runtimeClasspath)
60+
.allDependencies
61+
.filter { it is ProjectDependency }
62+
.map { it.name }
63+
64+
companion object {
65+
val DEPENDENCIES_TO_IGNORE: List<String> = listOf("protolite-well-known-types")
66+
}
5267
}

0 commit comments

Comments
 (0)