Skip to content

Commit 0fa0142

Browse files
committed
Refactor shared logic out
1 parent c31735f commit 0fa0142

File tree

3 files changed

+54
-70
lines changed

3 files changed

+54
-70
lines changed

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

Lines changed: 9 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ import com.github.sherter.googlejavaformatgradleplugin.GoogleJavaFormatExtension
44
import com.google.common.collect.ImmutableList
55
import com.google.common.collect.ImmutableMap
66
import java.io.File
7-
import java.nio.file.Paths
87
import org.gradle.api.Plugin
98
import org.gradle.api.Project
109
import org.gradle.api.attributes.Attribute
1110
import org.gradle.api.plugins.JavaPluginConvention
1211
import org.gradle.api.publish.PublishingExtension
1312
import org.gradle.api.publish.maven.MavenPublication
13+
import org.gradle.kotlin.dsl.getPlugin
1414
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
1515

1616
class FirebaseJavaLibraryPlugin : Plugin<Project> {
@@ -38,40 +38,13 @@ class FirebaseJavaLibraryPlugin : Plugin<Project> {
3838
}
3939

4040
private fun setupApiInformationAnalysis(project: Project) {
41-
val mainSourceSet =
42-
project.convention.getPlugin(JavaPluginConvention::class.java).sourceSets.getByName("main")
43-
val outputFile =
44-
project.rootProject.file(
45-
Paths.get(
46-
project.rootProject.buildDir.path,
47-
"apiinfo",
48-
project.path.substring(1).replace(":", "_")
49-
)
50-
)
51-
val outputApiFile = File(outputFile.absolutePath + "_api.txt")
52-
val apiTxt =
53-
if (project.file("api.txt").exists()) project.file("api.txt")
54-
else project.file(project.rootDir.toString() + "/empty-api.txt")
55-
val apiInfo =
56-
project.tasks.register("apiInformation", ApiInformationTask::class.java) {
57-
sources.value(project.provider { mainSourceSet.java.srcDirs })
58-
apiTxtFile.set(apiTxt)
59-
baselineFile.set(project.file("baseline.txt"))
60-
this.outputFile.set(outputFile)
61-
this.outputApiFile.set(outputApiFile)
62-
updateBaseline.set(project.hasProperty("updateBaseline"))
63-
}
64-
val generateApiTxt =
65-
project.tasks.register("generateApiTxtFile", GenerateApiTxtTask::class.java) {
66-
sources.value(project.provider { mainSourceSet.java.srcDirs })
67-
apiTxtFile.set(project.file("api.txt"))
68-
baselineFile.set(project.file("baseline.txt"))
69-
updateBaseline.set(project.hasProperty("updateBaseline"))
70-
}
71-
val docStubs =
72-
project.tasks.register("docStubs", GenerateStubsTask::class.java) {
73-
sources.value(project.provider { mainSourceSet.java.srcDirs })
74-
}
41+
val srcDirs =
42+
project.convention.getPlugin<JavaPluginConvention>().sourceSets.getByName("main").java.srcDirs
43+
44+
val apiInfo = getApiInfo(project, srcDirs)
45+
val generateApiTxt = getGenerateApiTxt(project, srcDirs)
46+
val docStubs = getDocStubs(project, srcDirs)
47+
7548
project.tasks.getByName("check").dependsOn(docStubs)
7649
project.afterEvaluate {
7750
val classpath =
@@ -88,6 +61,7 @@ class FirebaseJavaLibraryPlugin : Plugin<Project> {
8861
docStubs.configure { classPath = classpath }
8962
}
9063
}
64+
9165
private fun configurePublishing(project: Project, firebaseLibrary: FirebaseLibraryExtension) {
9266
project.apply(ImmutableMap.of("plugin", "maven-publish"))
9367
val publishing = project.extensions.getByType(PublishingExtension::class.java)

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

Lines changed: 4 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import com.google.common.collect.ImmutableMap
77
import com.google.firebase.gradle.plugins.ci.device.FirebaseTestServer
88
import com.google.firebase.gradle.plugins.license.LicenseResolverPlugin
99
import java.io.File
10-
import java.nio.file.Paths
1110
import org.gradle.api.JavaVersion
1211
import org.gradle.api.Plugin
1312
import org.gradle.api.Project
@@ -69,41 +68,11 @@ class FirebaseLibraryPlugin : Plugin<Project> {
6968
}
7069

7170
private fun setupApiInformationAnalysis(project: Project, android: LibraryExtension) {
72-
val mainSourceSet = android.sourceSets.getByName("main")
73-
val outputFile =
74-
project.rootProject.file(
75-
Paths.get(
76-
project.rootProject.buildDir.path,
77-
"apiinfo",
78-
project.path.substring(1).replace(":", "_")
79-
)
80-
)
81-
val outputApiFile = File(outputFile.absolutePath + "_api.txt")
82-
val apiTxt =
83-
if (project.file("api.txt").exists()) project.file("api.txt")
84-
else project.file(project.rootDir.toString() + "/empty-api.txt")
85-
val apiInfo =
86-
project.tasks.register("apiInformation", ApiInformationTask::class.java) {
87-
sources.value(project.provider { mainSourceSet.java.srcDirs })
88-
apiTxtFile.set(apiTxt)
89-
baselineFile.set(project.file("baseline.txt"))
90-
this.outputFile.set(outputFile)
91-
this.outputApiFile.set(outputApiFile)
92-
updateBaseline.set(project.hasProperty("updateBaseline"))
93-
}
71+
val srcDirs = android.sourceSets.getByName("main").java.srcDirs
9472

95-
val generateApiTxt =
96-
project.tasks.register("generateApiTxtFile", GenerateApiTxtTask::class.java) {
97-
sources.value(project.provider { mainSourceSet.java.srcDirs })
98-
apiTxtFile.set(project.file("api.txt"))
99-
baselineFile.set(project.file("baseline.txt"))
100-
updateBaseline.set(project.hasProperty("updateBaseline"))
101-
}
102-
103-
val docStubs =
104-
project.tasks.register("docStubs", GenerateStubsTask::class.java) {
105-
sources.value(project.provider { mainSourceSet.java.srcDirs })
106-
}
73+
val apiInfo = getApiInfo(project, srcDirs)
74+
val generateApiTxt = getGenerateApiTxt(project, srcDirs)
75+
val docStubs = getDocStubs(project, srcDirs)
10776

10877
project.tasks.getByName("check").dependsOn(docStubs)
10978
android.libraryVariants.all {

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

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,12 @@ package com.google.firebase.gradle.plugins
1616

1717
import com.google.firebase.gradle.plugins.ci.Coverage
1818
import java.io.File
19+
import java.nio.file.Paths
1920
import org.gradle.api.Project
2021
import org.gradle.api.provider.Provider
2122
import org.gradle.api.tasks.Copy
23+
import org.gradle.api.tasks.TaskProvider
24+
import org.gradle.kotlin.dsl.register
2225

2326
fun Copy.fromDirectory(directory: Provider<File>) =
2427
from(directory) { into(directory.map { it.name }) }
@@ -62,3 +65,41 @@ fun setupStaticAnalysis(project: Project, library: FirebaseLibraryExtension) {
6265
project.tasks.register("firebaseLint") { dependsOn("lint") }
6366
Coverage.apply(library)
6467
}
68+
69+
fun getApiInfo(project: Project, srcDirs: Set<File>): TaskProvider<ApiInformationTask> {
70+
val outputFile =
71+
project.rootProject.file(
72+
Paths.get(
73+
project.rootProject.buildDir.path,
74+
"apiinfo",
75+
project.path.substring(1).replace(":", "_")
76+
)
77+
)
78+
val outputApiFile = File(outputFile.absolutePath + "_api.txt")
79+
val apiTxt =
80+
if (project.file("api.txt").exists()) project.file("api.txt")
81+
else project.file(project.rootDir.toString() + "/empty-api.txt")
82+
val apiInfo =
83+
project.tasks.register<ApiInformationTask>("apiInformation") {
84+
sources.value(project.provider { srcDirs })
85+
apiTxtFile.set(apiTxt)
86+
baselineFile.set(project.file("baseline.txt"))
87+
this.outputFile.set(outputFile)
88+
this.outputApiFile.set(outputApiFile)
89+
updateBaseline.set(project.hasProperty("updateBaseline"))
90+
}
91+
return apiInfo
92+
}
93+
94+
fun getGenerateApiTxt(project: Project, srcDirs: Set<File>) =
95+
project.tasks.register<GenerateApiTxtTask>("generateApiTxtFile") {
96+
sources.value(project.provider { srcDirs })
97+
apiTxtFile.set(project.file("api.txt"))
98+
baselineFile.set(project.file("baseline.txt"))
99+
updateBaseline.set(project.hasProperty("updateBaseline"))
100+
}
101+
102+
fun getDocStubs(project: Project, srcDirs: Set<File>) =
103+
project.tasks.register<GenerateStubsTask>("docStubs") {
104+
sources.value(project.provider { srcDirs })
105+
}

0 commit comments

Comments
 (0)