From bcda23f54d2f7b206e3d4302eb2a19a54ff244fe Mon Sep 17 00:00:00 2001 From: Rodrigo Lazo Paz Date: Fri, 14 Nov 2025 17:40:04 -0500 Subject: [PATCH] [gemini] proposed solution to maven bom generator --- .../GenerateTutorialBundleTask.kt | 6 +-- .../gradle/plugins/services/GmavenService.kt | 41 +++++++++++++++++++ 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/plugins/src/main/java/com/google/firebase/gradle/bomgenerator/GenerateTutorialBundleTask.kt b/plugins/src/main/java/com/google/firebase/gradle/bomgenerator/GenerateTutorialBundleTask.kt index 0676b2ba386..ad444a1ee64 100644 --- a/plugins/src/main/java/com/google/firebase/gradle/bomgenerator/GenerateTutorialBundleTask.kt +++ b/plugins/src/main/java/com/google/firebase/gradle/bomgenerator/GenerateTutorialBundleTask.kt @@ -195,7 +195,7 @@ abstract class GenerateTutorialBundleTask : DefaultTask() { } else { logger.info("Fetching the latest version for an artifact: $fullArtifactName") - return gmaven.get().latestNonAlphaVersionOrNull(fullArtifactName) + return gmaven.get().latestStableVersionOrNull(fullArtifactName) ?: throw RuntimeException( "An artifact required for the tutorial bundle is missing from gmaven: $fullArtifactName" ) @@ -206,10 +206,6 @@ abstract class GenerateTutorialBundleTask : DefaultTask() { val (name, alias, extra) = mappings[fullArtifactName]!! val version = versionString(fullArtifactName) - if (version.lowercase().contains("-alpha")) { - logger.info("Ignoring alpha version of $fullArtifactName") - return "" // Alpha versions should not be included in the tutorial bundle - } return multiLine("", "", extra) } diff --git a/plugins/src/main/java/com/google/firebase/gradle/plugins/services/GmavenService.kt b/plugins/src/main/java/com/google/firebase/gradle/plugins/services/GmavenService.kt index a09dfe502e9..914a9ead95a 100644 --- a/plugins/src/main/java/com/google/firebase/gradle/plugins/services/GmavenService.kt +++ b/plugins/src/main/java/com/google/firebase/gradle/plugins/services/GmavenService.kt @@ -181,6 +181,41 @@ abstract class GMavenService : BuildService { return latestNonAlphaVersionOrNull(groupId, artifactId) } + /** + * Gets the latest stable version of the artifact that has been uploaded to GMaven, if any. + * + * Stable versions do not include alpha or beta versions. + * + * ``` + * gmaven.latestStableVersionOrNull("com.google.firebase", "firebase-components") // "18.0.1" + * ``` + * + * @param groupId The group to search under. + * @param artifactId The artifact to search for. + * @return The latest released version as a string, or null if the artifact couldn't be found. + * @see latestVersion + */ + fun latestStableVersionOrNull(groupId: String, artifactId: String) = + controller.latestStableVersionOrNull(groupId, artifactId) + + /** + * Gets the latest stable version of the artifact that has been uploaded to GMaven, if any. + * + * Stable versions do not include alpha or beta versions. + * + * ``` + * gmaven.latestStableVersionOrNull("com.google.firebase:firebase-components") // "18.0.1" + * ``` + * + * @param fullArtifactName The artifact to search for, represented as "groupId:artifactId". + * @return The latest released version as a string, or null if the artifact couldn't be found. + * @see latestVersion + */ + fun latestStableVersionOrNull(fullArtifactName: String): String? { + val (groupId, artifactId) = fullArtifactName.split(":") + return latestStableVersionOrNull(groupId, artifactId) + } + /** * Gets the latest version of the artifact that has been uploaded to GMaven, if any. * @@ -439,6 +474,11 @@ class GMavenServiceController( return findFirebaseArtifact(groupId, artifactId)?.latestNonAlphaVersion } + /** @see GMavenService.latestStableVersionOrNull */ + fun latestStableVersionOrNull(groupId: String, artifactId: String): String? { + return findFirebaseArtifact(groupId, artifactId)?.latestStableVersion + } + /** @see GMavenService.hasReleasedArtifact */ fun hasReleasedArtifact(groupId: String, artifactId: String): Boolean { return findFirebaseArtifact(groupId, artifactId) !== null @@ -592,6 +632,7 @@ data class GroupIndexArtifact( val versions: List, val latestVersion: String = versions.last(), val latestNonAlphaVersion: String? = versions.findLast { !it.contains("alpha") }, + val latestStableVersion: String? = versions.findLast { !it.contains("alpha") && !it.contains("beta") }, ) { /**