@@ -79,7 +79,9 @@ abstract class PublishingPlugin : Plugin<Project> {
79
79
val checkHeadDependencies =
80
80
registerCheckHeadDependenciesTask(project, releasingFirebaseLibraries)
81
81
val validateProjectsToPublish =
82
- registerValidateProjectsToPublishTask(project, releasingProjects)
82
+ registerValidateProjectsToPublishTask(project, releasingFirebaseLibraries)
83
+ val validateLibraryGroupsToPublish =
84
+ registerValidateLibraryGroupsToPublishTask(project, releasingFirebaseLibraries)
83
85
val publishReleasingLibrariesToBuildDir =
84
86
registerPublishReleasingLibrariesToBuildDirTask(project, releasingProjects)
85
87
val generateKotlindocsForRelease =
@@ -127,6 +129,7 @@ abstract class PublishingPlugin : Plugin<Project> {
127
129
project.tasks.register(FIREBASE_PUBLISH_TASK ) {
128
130
dependsOn(
129
131
validateProjectsToPublish,
132
+ validateLibraryGroupsToPublish,
130
133
checkHeadDependencies,
131
134
// validatePomForRelease, TODO(b/279466888) - Make GmavenHelper testable
132
135
buildMavenZip,
@@ -275,11 +278,11 @@ abstract class PublishingPlugin : Plugin<Project> {
275
278
// TODO(b/280320915): Remove doLast when Gradle + IDEA fix task configuration avoidance bug
276
279
private fun registerValidateProjectsToPublishTask (
277
280
project : Project ,
278
- releasingProjects : List <Project >
281
+ releasinglibraries : List <FirebaseLibraryExtension >
279
282
) =
280
283
project.tasks.register(VALIDATE_PROJECTS_TO_PUBLISH_TASK ) {
281
284
doLast {
282
- if (releasingProjects .isEmpty()) {
285
+ if (releasinglibraries .isEmpty()) {
283
286
throw GradleException (
284
287
" No projects to release. " +
285
288
" Ensure you've specified the projectsToPublish parameter, " +
@@ -289,6 +292,30 @@ abstract class PublishingPlugin : Plugin<Project> {
289
292
}
290
293
}
291
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()) {
311
+ throw GradleException (
312
+ " Some libraries in library groups are not in the release: " +
313
+ missingProjects.map { it.mavenName }.joinToString(" \n " )
314
+ )
315
+ }
316
+ }
317
+ }
318
+
292
319
/* *
293
320
* Registers the [PUBLISH_RELEASING_LIBS_TO_BUILD_TASK] task.
294
321
*
@@ -465,6 +492,7 @@ abstract class PublishingPlugin : Plugin<Project> {
465
492
466
493
const val GENERATE_BOM_TASK = " generateBom"
467
494
const val VALIDATE_PROJECTS_TO_PUBLISH_TASK = " validateProjectsToPublish"
495
+ const val VALIDATE_LIBRARY_GROUPS_TO_PUBLISH_TASK = " validateLibraryGroupsToPublish"
468
496
const val SEMVER_CHECK_TASK = " semverCheckForRelease"
469
497
const val RELEASE_GENEATOR_TASK = " generateReleaseConfig"
470
498
const val VALIDATE_POM_TASK = " validatePomForRelease"
0 commit comments