Skip to content

Commit 1fbd1bb

Browse files
committed
Refactor shared logic out
1 parent 405f5be commit 1fbd1bb

File tree

3 files changed

+55
-71
lines changed

3 files changed

+55
-71
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: 5 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import com.google.common.collect.ImmutableList
66
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
9+
import java.io.File
910
import org.gradle.api.JavaVersion
1011
import org.gradle.api.Plugin
1112
import org.gradle.api.Project
@@ -15,8 +16,6 @@ import org.gradle.api.publish.maven.MavenPublication
1516
import org.gradle.api.publish.tasks.GenerateModuleMetadata
1617
import org.gradle.kotlin.dsl.getByType
1718
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
18-
import java.io.File
19-
import java.nio.file.Paths
2019

2120
class FirebaseLibraryPlugin : Plugin<Project> {
2221

@@ -71,41 +70,11 @@ class FirebaseLibraryPlugin : Plugin<Project> {
7170
}
7271

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

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

11079
project.tasks.getByName("check").dependsOn(docStubs)
11180
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 }) }
@@ -74,3 +77,41 @@ fun setupStaticAnalysis(project: Project, library: FirebaseLibraryExtension) {
7477
project.tasks.register("firebaseLint") { dependsOn("lint") }
7578
Coverage.apply(library)
7679
}
80+
81+
fun getApiInfo(project: Project, srcDirs: Set<File>): TaskProvider<ApiInformationTask> {
82+
val outputFile =
83+
project.rootProject.file(
84+
Paths.get(
85+
project.rootProject.buildDir.path,
86+
"apiinfo",
87+
project.path.substring(1).replace(":", "_")
88+
)
89+
)
90+
val outputApiFile = File(outputFile.absolutePath + "_api.txt")
91+
val apiTxt =
92+
if (project.file("api.txt").exists()) project.file("api.txt")
93+
else project.file(project.rootDir.toString() + "/empty-api.txt")
94+
val apiInfo =
95+
project.tasks.register<ApiInformationTask>("apiInformation") {
96+
sources.value(project.provider { srcDirs })
97+
apiTxtFile.set(apiTxt)
98+
baselineFile.set(project.file("baseline.txt"))
99+
this.outputFile.set(outputFile)
100+
this.outputApiFile.set(outputApiFile)
101+
updateBaseline.set(project.hasProperty("updateBaseline"))
102+
}
103+
return apiInfo
104+
}
105+
106+
fun getGenerateApiTxt(project: Project, srcDirs: Set<File>) =
107+
project.tasks.register<GenerateApiTxtTask>("generateApiTxtFile") {
108+
sources.value(project.provider { srcDirs })
109+
apiTxtFile.set(project.file("api.txt"))
110+
baselineFile.set(project.file("baseline.txt"))
111+
updateBaseline.set(project.hasProperty("updateBaseline"))
112+
}
113+
114+
fun getDocStubs(project: Project, srcDirs: Set<File>) =
115+
project.tasks.register<GenerateStubsTask>("docStubs") {
116+
sources.value(project.provider { srcDirs })
117+
}

0 commit comments

Comments
 (0)