Skip to content

refactor the LG check into its own task, minor rewrite for kotlin con… #5223

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Aug 3, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@

package com.google.firebase.gradle.plugins

import com.google.common.collect.Sets
import com.google.firebase.gradle.bomgenerator.BomGeneratorTask
import com.google.firebase.gradle.plugins.PublishingPlugin.Companion.BUILD_BOM_ZIP_TASK
import com.google.firebase.gradle.plugins.PublishingPlugin.Companion.BUILD_KOTLINDOC_ZIP_TASK
Expand Down Expand Up @@ -81,6 +80,8 @@ abstract class PublishingPlugin : Plugin<Project> {
registerCheckHeadDependenciesTask(project, releasingFirebaseLibraries)
val validateProjectsToPublish =
registerValidateProjectsToPublishTask(project, releasingFirebaseLibraries)
val validateLibraryGroupsToPublish =
registerValidateLibraryGroupsToPublishTask(project, releasingFirebaseLibraries)
val publishReleasingLibrariesToBuildDir =
registerPublishReleasingLibrariesToBuildDirTask(project, releasingProjects)
val generateKotlindocsForRelease =
Expand Down Expand Up @@ -128,6 +129,7 @@ abstract class PublishingPlugin : Plugin<Project> {
project.tasks.register(FIREBASE_PUBLISH_TASK) {
dependsOn(
validateProjectsToPublish,
validateLibraryGroupsToPublish,
checkHeadDependencies,
// validatePomForRelease, TODO(b/279466888) - Make GmavenHelper testable
buildMavenZip,
Expand Down Expand Up @@ -287,13 +289,28 @@ abstract class PublishingPlugin : Plugin<Project> {
"or have a valid $RELEASE_CONFIG_FILE file at the root directory."
)
}
val libraryGroupProjects =
releasinglibraries.flatMap { it.projectsToRelease }.filterNotNull().toSet()
val releasingProjects = releasinglibraries.mapNotNull { it.project }.toSet()
if (!libraryGroupProjects.equals(releasingProjects)) {
}
}

/**
* Registers the [VALIDATE_LIBRARY_GROUPS_TO_PUBLISH_TASK] task.
*
* Validates that all library groups of all publishing projects are included in the release config
*
* @throws GradleException if a library is releasing without it's library group.
*/
private fun registerValidateLibraryGroupsToPublishTask(
project: Project,
releasinglibraries: List<FirebaseLibraryExtension>
) =
project.tasks.register(VALIDATE_LIBRARY_GROUPS_TO_PUBLISH_TASK) {
doLast {
val libraryGroupProjects = releasinglibraries.flatMap { it.librariesToRelease }
val missingProjects = libraryGroupProjects - releasinglibraries
if (missingProjects.isNotEmpty()) {
throw GradleException(
"Some libraries in library groups are not in the release: " +
Sets.difference(libraryGroupProjects, releasingProjects).map { it.displayName }
missingProjects.map { it.mavenName }.joinToString("\n")
)
}
}
Expand Down Expand Up @@ -475,6 +492,7 @@ abstract class PublishingPlugin : Plugin<Project> {

const val GENERATE_BOM_TASK = "generateBom"
const val VALIDATE_PROJECTS_TO_PUBLISH_TASK = "validateProjectsToPublish"
const val VALIDATE_LIBRARY_GROUPS_TO_PUBLISH_TASK = "validateLibraryGroupsToPublish"
const val SEMVER_CHECK_TASK = "semverCheckForRelease"
const val RELEASE_GENEATOR_TASK = "generateReleaseConfig"
const val VALIDATE_POM_TASK = "validatePomForRelease"
Expand Down