Skip to content

Commit c965745

Browse files
authored
Add Kotlindoc-only publishing and enable for Dataconnect (#7330)
Adds a new field for firebase libraries to enable kotlindoc-only publishing if they publish docs. This has been enabled for Dataconnect as well. When this is enabled, no `android` folder is generated by Dackka.
1 parent df3a99b commit c965745

File tree

4 files changed

+30
-2
lines changed

4 files changed

+30
-2
lines changed

firebase-dataconnect/firebase-dataconnect.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ firebaseLibrary {
2828
libraryGroup = "dataconnect"
2929
testLab.enabled = false
3030
publishJavadoc = true
31+
onlyPublishKotlindoc = true
3132
releaseNotes {
3233
name.set("{{data_connect_short}}")
3334
versionName.set("data-connect")

plugins/src/main/java/com/google/firebase/gradle/plugins/BaseFirebaseLibraryPlugin.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ abstract class BaseFirebaseLibraryPlugin : Plugin<Project> {
5656
project.gradle.sharedServices.registerIfAbsent<GMavenService, _>("gmaven")
5757
previewMode.convention("")
5858
publishJavadoc.convention(true)
59+
onlyPublishKotlindoc.convention(false)
5960
artifactId.convention(project.name)
6061
groupId.convention(project.provider { project.group.toString() })
6162
libraryGroup.convention(artifactId)

plugins/src/main/java/com/google/firebase/gradle/plugins/DackkaGenerationTask.kt

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package com.google.firebase.gradle.plugins
1919
import java.io.File
2020
import javax.inject.Inject
2121
import org.gradle.api.DefaultTask
22+
import org.gradle.api.Project
2223
import org.gradle.api.file.FileCollection
2324
import org.gradle.api.file.RegularFileProperty
2425
import org.gradle.api.provider.ListProperty
@@ -120,7 +121,8 @@ constructor(private val workerExecutor: WorkerExecutor) : GenerateDocumentationT
120121
"java.lang.Override",
121122
)
122123
val annotationsNotToDisplayKotlin = listOf("kotlin.ExtensionFunctionType")
123-
124+
// A null path disables javadoc generation
125+
val javadocPath: String? = "android".takeUnless { publishKotlindocOnly(project) }
124126
val jsonMap =
125127
mapOf(
126128
"moduleName" to "",
@@ -152,7 +154,7 @@ constructor(private val workerExecutor: WorkerExecutor) : GenerateDocumentationT
152154
JSONObject(
153155
mapOf(
154156
"docRootPath" to "/docs/reference/",
155-
"javaDocsPath" to "android",
157+
"javaDocsPath" to javadocPath,
156158
"kotlinDocsPath" to "kotlin",
157159
"projectPath" to "client/${clientName.get()}",
158160
"includedHeadTagsPathJava" to
@@ -171,6 +173,14 @@ constructor(private val workerExecutor: WorkerExecutor) : GenerateDocumentationT
171173
return JSONObject(jsonMap)
172174
}
173175

176+
/**
177+
* Checks if the [Project] should only release Kotlindocs
178+
*
179+
* This is done via the [FirebaseLibraryExtension.onlyPublishKotlindoc] property.
180+
*/
181+
private fun publishKotlindocOnly(project: Project) =
182+
project.firebaseLibrary.onlyPublishKotlindoc.get()
183+
174184
private fun createExternalLinks(
175185
packageLists: ListProperty<File>
176186
): List<ExternalDocumentationLink> {

plugins/src/main/java/com/google/firebase/gradle/plugins/FirebaseLibraryExtension.kt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,22 @@ constructor(val project: Project, val type: LibraryType) {
6969
*/
7070
abstract val publishJavadoc: Property<Boolean>
7171

72+
/**
73+
* Only publish Kotlindocs instead of also publishing Javadocs for this library.
74+
*
75+
* This property is only effective when `publishJavadoc` is `true`.
76+
*
77+
* Defaults to `false`.
78+
*
79+
* ```sh
80+
* ./gradlew :firebase-common:kotlindoc
81+
* ```
82+
*
83+
* @see [FirebaseLibraryExtension]
84+
* @see publishJavadoc
85+
*/
86+
abstract val onlyPublishKotlindoc: Property<Boolean>
87+
7288
/**
7389
* Indicates the library is in a preview mode (such as `alpha` or `beta`).
7490
*

0 commit comments

Comments
 (0)