Skip to content

Commit 9b40dba

Browse files
committed
Make firesite transform cacheable
1 parent 523730a commit 9b40dba

File tree

2 files changed

+29
-13
lines changed

2 files changed

+29
-13
lines changed

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

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -120,10 +120,11 @@ abstract class DackkaPlugin : Plugin<Project> {
120120
project.afterEvaluate {
121121
if (shouldWePublish(project)) {
122122
val generateDocumentation = registerGenerateDackkaDocumentationTask(project)
123-
val outputDirectory = generateDocumentation.flatMap { it.outputDirectory }
124-
val firesiteTransform = registerFiresiteTransformTask(project, outputDirectory)
125-
val copyJavaDocToCommonDirectory = registerCopyJavaDocToCommonDirectoryTask(project, outputDirectory)
126-
val copyKotlinDocToCommonDirectory = registerCopyKotlinDocToCommonDirectoryTask(project, outputDirectory)
123+
val dackkaFilesDirectory = generateDocumentation.flatMap { it.outputDirectory }
124+
val firesiteTransform = registerFiresiteTransformTask(project, dackkaFilesDirectory)
125+
val transformedFilesDirectory = firesiteTransform.flatMap { it.outputDirectory }
126+
val copyJavaDocToCommonDirectory = registerCopyJavaDocToCommonDirectoryTask(project, transformedFilesDirectory)
127+
val copyKotlinDocToCommonDirectory = registerCopyKotlinDocToCommonDirectoryTask(project, transformedFilesDirectory)
127128

128129
project.tasks.register("kotlindoc") {
129130
group = "documentation"
@@ -238,12 +239,12 @@ abstract class DackkaPlugin : Plugin<Project> {
238239
clientName.set(project.firebaseConfigValue { artifactId })
239240
}
240241

241-
// TODO(b/243833009): Make task cacheable
242-
private fun registerFiresiteTransformTask(project: Project, outputDirectory: Provider<File>) =
242+
private fun registerFiresiteTransformTask(project: Project, dackkaFilesDirectory: Provider<File>) =
243243
project.tasks.register<FiresiteTransformTask>("firesiteTransform") {
244244
mustRunAfter("generateDackkaDocumentation")
245245

246-
dackkaFiles.set(outputDirectory)
246+
dackkaFiles.set(dackkaFilesDirectory)
247+
outputDirectory.set(project.file("${project.buildDir}/dackkaTransformedFiles"))
247248
}
248249

249250
// TODO(b/246593212): Migrate doc files to single directory
@@ -287,5 +288,7 @@ abstract class DackkaPlugin : Plugin<Project> {
287288
group = "cleanup"
288289

289290
delete("${project.buildDir}/dackkaDocumentation")
291+
delete("${project.buildDir}/dackkaTransformedFiles")
292+
delete("${project.rootProject.buildDir}/firebase-kotlindoc")
290293
}
291294
}

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

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@ package com.google.firebase.gradle.plugins
33
import java.io.File
44
import org.gradle.api.DefaultTask
55
import org.gradle.api.provider.Property
6+
import org.gradle.api.tasks.CacheableTask
67
import org.gradle.api.tasks.InputDirectory
8+
import org.gradle.api.tasks.OutputDirectory
9+
import org.gradle.api.tasks.PathSensitive
10+
import org.gradle.api.tasks.PathSensitivity
711
import org.gradle.api.tasks.TaskAction
812

913
/**
@@ -21,10 +25,15 @@ import org.gradle.api.tasks.TaskAction
2125
* **Please note:**
2226
* This task is idempotent- meaning it can safely be ran multiple times on the same set of files.
2327
*/
28+
@CacheableTask
2429
abstract class FiresiteTransformTask : DefaultTask() {
2530
@get:InputDirectory
31+
@get:PathSensitive(PathSensitivity.RELATIVE)
2632
abstract val dackkaFiles: Property<File>
2733

34+
@get:OutputDirectory
35+
abstract val outputDirectory: Property<File>
36+
2837
@TaskAction
2938
fun build() {
3039
val namesOfFilesWeDoNotNeed = listOf(
@@ -33,14 +42,18 @@ abstract class FiresiteTransformTask : DefaultTask() {
3342
"packages.html",
3443
"package-list"
3544
)
45+
val rootDirectory = dackkaFiles.get()
46+
val targetDirectory = outputDirectory.get()
47+
targetDirectory.deleteRecursively()
48+
49+
rootDirectory.walkTopDown().forEach {
50+
if (it.name !in namesOfFilesWeDoNotNeed) {
51+
val relativePath = it.toRelativeString(rootDirectory)
52+
val newFile = it.copyTo(File("${targetDirectory.path}/$relativePath"), true)
3653

37-
dackkaFiles.get().walkTopDown().forEach {
38-
if (it.name in namesOfFilesWeDoNotNeed) {
39-
it.delete()
40-
} else {
4154
when (it.extension) {
42-
"html" -> it.fixHTMLFile()
43-
"yaml" -> it.fixYamlFile()
55+
"html" -> newFile.fixHTMLFile()
56+
"yaml" -> newFile.fixYamlFile()
4457
}
4558
}
4659
}

0 commit comments

Comments
 (0)