Skip to content

Commit 0840f97

Browse files
author
David Motsonashvili
committed
refactor the LG check into its own task, minor rewrite for kotlin convention
1 parent d5b05f2 commit 0840f97

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

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

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@ abstract class PublishingPlugin : Plugin<Project> {
8181
registerCheckHeadDependenciesTask(project, releasingFirebaseLibraries)
8282
val validateProjectsToPublish =
8383
registerValidateProjectsToPublishTask(project, releasingFirebaseLibraries)
84+
val validateLibraryGroupsToPublish =
85+
registerValidateLibraryGroupsToPublishTask(project, releasingFirebaseLibraries)
8486
val publishReleasingLibrariesToBuildDir =
8587
registerPublishReleasingLibrariesToBuildDirTask(project, releasingProjects)
8688
val generateKotlindocsForRelease =
@@ -128,6 +130,7 @@ abstract class PublishingPlugin : Plugin<Project> {
128130
project.tasks.register(FIREBASE_PUBLISH_TASK) {
129131
dependsOn(
130132
validateProjectsToPublish,
133+
validateLibraryGroupsToPublish,
131134
checkHeadDependencies,
132135
// validatePomForRelease, TODO(b/279466888) - Make GmavenHelper testable
133136
buildMavenZip,
@@ -299,6 +302,29 @@ abstract class PublishingPlugin : Plugin<Project> {
299302
}
300303
}
301304

305+
/**
306+
* Registers the [VALIDATE_LIBRARY_GROUPS_TO_PUBLISH_TASK] task.
307+
*
308+
* Validates that all library groups of all publishing projects are included in the release config
309+
*
310+
* @throws GradleException if a library is releasing without it's library group.
311+
*/
312+
private fun registerValidateLibraryGroupsToPublishTask(
313+
project: Project,
314+
releasinglibraries: List<FirebaseLibraryExtension>
315+
) =
316+
project.tasks.register(VALIDATE_LIBRARY_GROUPS_TO_PUBLISH_TASK) {
317+
doLast {
318+
val libraryGroupProjects = releasinglibraries.flatMap { it.librariesToRelease }
319+
val missingProjects = libraryGroupProjects - releasinglibraries
320+
if (missingProjects.isNotEmpty()) {
321+
throw GradleException(
322+
"Some libraries in library groups are not in the release: ${missingProjects.map { it.mavenName }}"
323+
)
324+
}
325+
}
326+
}
327+
302328
/**
303329
* Registers the [PUBLISH_RELEASING_LIBS_TO_BUILD_TASK] task.
304330
*
@@ -475,6 +501,7 @@ abstract class PublishingPlugin : Plugin<Project> {
475501

476502
const val GENERATE_BOM_TASK = "generateBom"
477503
const val VALIDATE_PROJECTS_TO_PUBLISH_TASK = "validateProjectsToPublish"
504+
const val VALIDATE_LIBRARY_GROUPS_TO_PUBLISH_TASK = "validateLGsToPublish"
478505
const val SEMVER_CHECK_TASK = "semverCheckForRelease"
479506
const val RELEASE_GENEATOR_TASK = "generateReleaseConfig"
480507
const val VALIDATE_POM_TASK = "validatePomForRelease"

0 commit comments

Comments
 (0)