|
14 | 14 |
|
15 | 15 | package com.google.firebase.gradle.plugins
|
16 | 16 |
|
17 |
| -import com.google.common.collect.Sets |
18 | 17 | import com.google.firebase.gradle.bomgenerator.BomGeneratorTask
|
19 | 18 | import com.google.firebase.gradle.plugins.PublishingPlugin.Companion.BUILD_BOM_ZIP_TASK
|
20 | 19 | import com.google.firebase.gradle.plugins.PublishingPlugin.Companion.BUILD_KOTLINDOC_ZIP_TASK
|
@@ -81,6 +80,8 @@ abstract class PublishingPlugin : Plugin<Project> {
|
81 | 80 | registerCheckHeadDependenciesTask(project, releasingFirebaseLibraries)
|
82 | 81 | val validateProjectsToPublish =
|
83 | 82 | registerValidateProjectsToPublishTask(project, releasingFirebaseLibraries)
|
| 83 | + val validateLibraryGroupsToPublish = |
| 84 | + registerValidateLibraryGroupsToPublishTask(project, releasingFirebaseLibraries) |
84 | 85 | val publishReleasingLibrariesToBuildDir =
|
85 | 86 | registerPublishReleasingLibrariesToBuildDirTask(project, releasingProjects)
|
86 | 87 | val generateKotlindocsForRelease =
|
@@ -128,6 +129,7 @@ abstract class PublishingPlugin : Plugin<Project> {
|
128 | 129 | project.tasks.register(FIREBASE_PUBLISH_TASK) {
|
129 | 130 | dependsOn(
|
130 | 131 | validateProjectsToPublish,
|
| 132 | + validateLibraryGroupsToPublish, |
131 | 133 | checkHeadDependencies,
|
132 | 134 | // validatePomForRelease, TODO(b/279466888) - Make GmavenHelper testable
|
133 | 135 | buildMavenZip,
|
@@ -287,13 +289,28 @@ abstract class PublishingPlugin : Plugin<Project> {
|
287 | 289 | "or have a valid $RELEASE_CONFIG_FILE file at the root directory."
|
288 | 290 | )
|
289 | 291 | }
|
290 |
| - val libraryGroupProjects = |
291 |
| - releasinglibraries.flatMap { it.projectsToRelease }.filterNotNull().toSet() |
292 |
| - val releasingProjects = releasinglibraries.mapNotNull { it.project }.toSet() |
293 |
| - if (!libraryGroupProjects.equals(releasingProjects)) { |
| 292 | + } |
| 293 | + } |
| 294 | + |
| 295 | + /** |
| 296 | + * Registers the [VALIDATE_LIBRARY_GROUPS_TO_PUBLISH_TASK] task. |
| 297 | + * |
| 298 | + * Validates that all library groups of all publishing projects are included in the release config |
| 299 | + * |
| 300 | + * @throws GradleException if a library is releasing without it's library group. |
| 301 | + */ |
| 302 | + private fun registerValidateLibraryGroupsToPublishTask( |
| 303 | + project: Project, |
| 304 | + releasinglibraries: List<FirebaseLibraryExtension> |
| 305 | + ) = |
| 306 | + project.tasks.register(VALIDATE_LIBRARY_GROUPS_TO_PUBLISH_TASK) { |
| 307 | + doLast { |
| 308 | + val libraryGroupProjects = releasinglibraries.flatMap { it.librariesToRelease } |
| 309 | + val missingProjects = libraryGroupProjects - releasinglibraries |
| 310 | + if (missingProjects.isNotEmpty()) { |
294 | 311 | throw GradleException(
|
295 | 312 | "Some libraries in library groups are not in the release: " +
|
296 |
| - Sets.difference(libraryGroupProjects, releasingProjects).map { it.displayName } |
| 313 | + missingProjects.map { it.mavenName }.joinToString("\n") |
297 | 314 | )
|
298 | 315 | }
|
299 | 316 | }
|
@@ -475,6 +492,7 @@ abstract class PublishingPlugin : Plugin<Project> {
|
475 | 492 |
|
476 | 493 | const val GENERATE_BOM_TASK = "generateBom"
|
477 | 494 | const val VALIDATE_PROJECTS_TO_PUBLISH_TASK = "validateProjectsToPublish"
|
| 495 | + const val VALIDATE_LIBRARY_GROUPS_TO_PUBLISH_TASK = "validateLibraryGroupsToPublish" |
478 | 496 | const val SEMVER_CHECK_TASK = "semverCheckForRelease"
|
479 | 497 | const val RELEASE_GENEATOR_TASK = "generateReleaseConfig"
|
480 | 498 | const val VALIDATE_POM_TASK = "validatePomForRelease"
|
|
0 commit comments