Skip to content

Commit 177c51f

Browse files
davidmotsonDavid Motsonashvili
and
David Motsonashvili
authored
refactor the LG check into its own task, minor rewrite for kotlin con… (#5223)
* refactor the LG check into its own task, minor rewrite for kotlin convention * remove old check * ktfmt * ktfmt * ktfmt + human intervention + comment input --------- Co-authored-by: David Motsonashvili <[email protected]>
1 parent d5b05f2 commit 177c51f

File tree

1 file changed

+24
-6
lines changed

1 file changed

+24
-6
lines changed

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

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414

1515
package com.google.firebase.gradle.plugins
1616

17-
import com.google.common.collect.Sets
1817
import com.google.firebase.gradle.bomgenerator.BomGeneratorTask
1918
import com.google.firebase.gradle.plugins.PublishingPlugin.Companion.BUILD_BOM_ZIP_TASK
2019
import com.google.firebase.gradle.plugins.PublishingPlugin.Companion.BUILD_KOTLINDOC_ZIP_TASK
@@ -81,6 +80,8 @@ abstract class PublishingPlugin : Plugin<Project> {
8180
registerCheckHeadDependenciesTask(project, releasingFirebaseLibraries)
8281
val validateProjectsToPublish =
8382
registerValidateProjectsToPublishTask(project, releasingFirebaseLibraries)
83+
val validateLibraryGroupsToPublish =
84+
registerValidateLibraryGroupsToPublishTask(project, releasingFirebaseLibraries)
8485
val publishReleasingLibrariesToBuildDir =
8586
registerPublishReleasingLibrariesToBuildDirTask(project, releasingProjects)
8687
val generateKotlindocsForRelease =
@@ -128,6 +129,7 @@ abstract class PublishingPlugin : Plugin<Project> {
128129
project.tasks.register(FIREBASE_PUBLISH_TASK) {
129130
dependsOn(
130131
validateProjectsToPublish,
132+
validateLibraryGroupsToPublish,
131133
checkHeadDependencies,
132134
// validatePomForRelease, TODO(b/279466888) - Make GmavenHelper testable
133135
buildMavenZip,
@@ -287,13 +289,28 @@ abstract class PublishingPlugin : Plugin<Project> {
287289
"or have a valid $RELEASE_CONFIG_FILE file at the root directory."
288290
)
289291
}
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()) {
294311
throw GradleException(
295312
"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")
297314
)
298315
}
299316
}
@@ -475,6 +492,7 @@ abstract class PublishingPlugin : Plugin<Project> {
475492

476493
const val GENERATE_BOM_TASK = "generateBom"
477494
const val VALIDATE_PROJECTS_TO_PUBLISH_TASK = "validateProjectsToPublish"
495+
const val VALIDATE_LIBRARY_GROUPS_TO_PUBLISH_TASK = "validateLibraryGroupsToPublish"
478496
const val SEMVER_CHECK_TASK = "semverCheckForRelease"
479497
const val RELEASE_GENEATOR_TASK = "generateReleaseConfig"
480498
const val VALIDATE_POM_TASK = "validatePomForRelease"

0 commit comments

Comments
 (0)