14
14
15
15
package com.google.firebase.gradle.plugins
16
16
17
+ import com.google.common.collect.Sets
17
18
import com.google.firebase.gradle.bomgenerator.BomGeneratorTask
18
19
import com.google.firebase.gradle.plugins.PublishingPlugin.Companion.BUILD_BOM_ZIP_TASK
19
20
import com.google.firebase.gradle.plugins.PublishingPlugin.Companion.BUILD_KOTLINDOC_ZIP_TASK
@@ -45,18 +46,18 @@ import org.gradle.kotlin.dsl.register
45
46
* - [VALIDATE_POM_TASK][registerValidatePomForReleaseTask]
46
47
* - [VALIDATE_PROJECTS_TO_PUBLISH_TASK][registerValidateProjectsToPublishTask]
47
48
* - [BUILD_MAVEN_ZIP_TASK] -> Creates a zip file of the contents of
48
- * [PUBLISH_RELEASING_LIBS_TO_BUILD_TASK] [registerPublishReleasingLibrariesToBuildDirTask]
49
+ * [PUBLISH_RELEASING_LIBS_TO_BUILD_TASK] [registerPublishReleasingLibrariesToBuildDirTask]
49
50
* - [BUILD_KOTLINDOC_ZIP_TASK] -> Creates a zip file of the contents of
50
- * [GENERATE_KOTLINDOC_FOR_RELEASE_TASK] [registerGenerateKotlindocForReleaseTask]
51
+ * [GENERATE_KOTLINDOC_FOR_RELEASE_TASK] [registerGenerateKotlindocForReleaseTask]
51
52
* - [BUILD_RELEASE_NOTES_ZIP_TASK] -> Creates a zip file of the contents of
52
- * [PREPARE_RELEASE_NOTES_FOR_DROP][registerPrepareReleaseNotesForDropTask]
53
+ * [PREPARE_RELEASE_NOTES_FOR_DROP][registerPrepareReleaseNotesForDropTask]
53
54
* - [FIREBASE_PUBLISH_TASK] -> Runs all the tasks above
54
55
*
55
56
* The following are additional tasks provided- that are either for convenience sake, or are used
56
57
* outside of the standard [FIREBASE_PUBLISH_TASK] workflow (possibly at a later time in the release
57
58
* cycle):
58
59
* - [BUILD_BOM_ZIP_TASK] -> Creates a zip file of the contents of [GENERATE_BOM_TASK]
59
- * [registerGenerateBomTask]
60
+ * [registerGenerateBomTask]
60
61
* - [RELEASE_GENEATOR_TASK][registerGenerateReleaseConfigFilesTask]
61
62
* - [PUBLISH_RELEASING_LIBS_TO_LOCAL_TASK][registerPublishReleasingLibrariesToMavenLocalTask]
62
63
* - [SEMVER_CHECK_TASK][registerSemverCheckForReleaseTask]
@@ -79,7 +80,7 @@ abstract class PublishingPlugin : Plugin<Project> {
79
80
val checkHeadDependencies =
80
81
registerCheckHeadDependenciesTask(project, releasingFirebaseLibraries)
81
82
val validateProjectsToPublish =
82
- registerValidateProjectsToPublishTask(project, releasingProjects )
83
+ registerValidateProjectsToPublishTask(project, releasingFirebaseLibraries )
83
84
val publishReleasingLibrariesToBuildDir =
84
85
registerPublishReleasingLibrariesToBuildDirTask(project, releasingProjects)
85
86
val generateKotlindocsForRelease =
@@ -275,17 +276,26 @@ abstract class PublishingPlugin : Plugin<Project> {
275
276
// TODO(b/280320915): Remove doLast when Gradle + IDEA fix task configuration avoidance bug
276
277
private fun registerValidateProjectsToPublishTask (
277
278
project : Project ,
278
- releasingProjects : List <Project >
279
+ releasinglibraries : List <FirebaseLibraryExtension >
279
280
) =
280
281
project.tasks.register(VALIDATE_PROJECTS_TO_PUBLISH_TASK ) {
281
282
doLast {
282
- if (releasingProjects .isEmpty()) {
283
+ if (releasinglibraries .isEmpty()) {
283
284
throw GradleException (
284
285
" No projects to release. " +
285
286
" Ensure you've specified the projectsToPublish parameter, " +
286
287
" or have a valid $RELEASE_CONFIG_FILE file at the root directory."
287
288
)
288
289
}
290
+ val libraryGroupProjects =
291
+ releasinglibraries.flatMap { it.projectsToRelease }.filterNotNull().toSet()
292
+ val releasingProjects = releasinglibraries.mapNotNull { it.project }.toSet()
293
+ if (! libraryGroupProjects.equals(releasingProjects)) {
294
+ throw GradleException (
295
+ " Some libraries in library groups are not in the release: " +
296
+ Sets .difference(libraryGroupProjects, releasingProjects).map { it.displayName }
297
+ )
298
+ }
289
299
}
290
300
}
291
301
0 commit comments