Skip to content

Commit 736be15

Browse files
committed
Merge remote-tracking branch 'origin/master' into davidmotson.bom_generator
2 parents fdf38e0 + 34bf6dc commit 736be15

File tree

32 files changed

+699
-231
lines changed

32 files changed

+699
-231
lines changed

buildSrc/build.gradle

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
plugins {
1616
id "org.gradle.kotlin.kotlin-dsl" version "1.2.6"
1717
id "org.jlleitschuh.gradle.ktlint" version "9.2.1"
18+
id 'com.github.sherter.google-java-format' version '0.9'
1819
}
1920

2021
repositories {
@@ -35,6 +36,23 @@ repositories {
3536
// Refer go/fireperf-plugin-test-on-head for more details.
3637
def perfPluginVersion = System.getenv("FIREBASE_PERF_PLUGIN_VERSION") ?: "1.3.4"
3738

39+
googleJavaFormat {
40+
toolVersion = '1.7'
41+
}
42+
tasks.googleJavaFormat {
43+
source '.'
44+
include '**/java/**/*.java'
45+
exclude '**/generated/**'
46+
exclude '**/package-info.java'
47+
}
48+
49+
tasks.verifyGoogleJavaFormat {
50+
source '.'
51+
include '**/java/**/*.java'
52+
exclude '**/generated/**'
53+
exclude '**/package-info.java'
54+
}
55+
3856
dependencies {
3957
// Firebase performance plugin, it should be added here because of how gradle dependency
4058
// resolution works, otherwise it breaks Fireperf Test Apps.

buildSrc/src/main/java/com/google/firebase/gradle/plugins/Dokka.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ static void configure(
6363
BuildTypeAttr.ATTRIBUTE, project.getObjects().named(BuildTypeAttr.class, "release"));
6464
}
6565
Configuration runtimeOnly = project.getConfigurations().findByName("runtimeOnly");
66-
if(runtimeOnly != null) {
66+
if (runtimeOnly != null) {
6767
javadocClasspath.extendsFrom(runtimeOnly);
6868
}
6969

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
// Copyright 2021 Google LLC
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
package com.google.firebase.gradle.plugins;
15+
16+
import java.io.File;
17+
import org.gradle.api.Plugin;
18+
import org.gradle.api.Project;
19+
import org.gradle.api.Task;
20+
import org.gradle.api.publish.PublishingExtension;
21+
import org.gradle.api.publish.maven.MavenPublication;
22+
import org.gradle.api.publish.maven.plugins.MavenPublishPlugin;
23+
import org.gradle.api.tasks.bundling.Jar;
24+
import org.gradle.api.tasks.bundling.Zip;
25+
26+
/**
27+
* Injects release related artifact into the maven publication.
28+
*
29+
* <p>The artifact contains the following files in it:
30+
*
31+
* <ul>
32+
* <li>api-diff.txt
33+
* <li>api.txt
34+
* <li>mapping.txt(optional,only present if library is proguarded)
35+
* </ul>
36+
*/
37+
public class FireEscapeArtifactPlugin implements Plugin<Project> {
38+
private Project project;
39+
40+
@Override
41+
public void apply(Project project) {
42+
this.project = project;
43+
project.afterEvaluate(
44+
p -> {
45+
FirebaseLibraryExtension firebaseLibrary =
46+
p.getExtensions().findByType(FirebaseLibraryExtension.class);
47+
if (firebaseLibrary == null) {
48+
return;
49+
}
50+
51+
Zip fireEscapeTask =
52+
p.getTasks()
53+
.create(
54+
"mavenAarFireEscapeArtifact", Zip.class, t -> t.setClassifier("fireescape"));
55+
56+
p.getPlugins()
57+
.withType(
58+
MavenPublishPlugin.class,
59+
plugin ->
60+
p.getExtensions()
61+
.configure(
62+
PublishingExtension.class,
63+
pub ->
64+
pub.getPublications()
65+
.withType(
66+
MavenPublication.class,
67+
publication -> {
68+
if ("mavenAar".equals(publication.getName())) {
69+
configurePublication(
70+
publication,
71+
fireEscapeTask,
72+
firebaseLibrary.type);
73+
}
74+
})));
75+
});
76+
}
77+
78+
private void configurePublication(
79+
MavenPublication publication, Zip artifactTask, LibraryType libraryType) {
80+
publication.artifact(artifactTask);
81+
artifactTask.from(apiTxtFileTask());
82+
if (libraryType.equals(LibraryType.ANDROID)) {
83+
artifactTask.from(proguardMappingFileTask());
84+
}
85+
publication.artifact(javadocTask());
86+
}
87+
88+
private Task proguardMappingFileTask() {
89+
return project
90+
.getTasks()
91+
.create(
92+
"fireEscapeProguardMapping",
93+
task -> {
94+
project
95+
.getTasks()
96+
.all(
97+
it -> {
98+
if (it.getName().equals("assembleRelease")) {
99+
task.dependsOn(it);
100+
}
101+
});
102+
task.getOutputs()
103+
.file(new File(project.getBuildDir(), "outputs/mapping/release/mapping.txt"));
104+
});
105+
}
106+
107+
private Task apiTxtFileTask() {
108+
return project
109+
.getTasks()
110+
.create(
111+
"fireEscapeApiTxt",
112+
task -> {
113+
task.dependsOn(TasksKt.JAVADOC_TASK_NAME);
114+
task.getOutputs().file(new File(project.getBuildDir(), "tmp/javadoc/api.txt"));
115+
});
116+
}
117+
118+
private Task javadocTask() {
119+
return project
120+
.getTasks()
121+
.create(
122+
"fireescapeJavadocJar",
123+
Jar.class,
124+
javadoc -> {
125+
javadoc.dependsOn(TasksKt.JAVADOC_TASK_NAME);
126+
javadoc.from(new File(project.getBuildDir(), "/docs/javadoc/reference"));
127+
javadoc.include("**/*");
128+
javadoc.setArchiveName("fireescape-javadoc.jar");
129+
javadoc.setClassifier("javadoc");
130+
});
131+
}
132+
}

buildSrc/src/main/java/com/google/firebase/gradle/plugins/JavadocPlugin.java

Lines changed: 37 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
// limitations under the License.
1414
package com.google.firebase.gradle.plugins;
1515

16-
import static com.google.firebase.gradle.plugins.ProjectUtilsKt.toBoolean;
1716
import static com.google.firebase.gradle.plugins.ClosureUtil.closureOf;
17+
import static com.google.firebase.gradle.plugins.ProjectUtilsKt.toBoolean;
1818

1919
import com.android.build.gradle.LibraryExtension;
2020
import com.google.common.collect.ImmutableList;
@@ -93,11 +93,14 @@ private static void applyDoclava(Project project) {
9393
generateJavadoc,
9494
closureOf(
9595
(Javadoc javadoc) -> {
96-
project.getTasks().all(it -> {
97-
if (it.getName().equals("assembleRelease")) {
98-
javadoc.dependsOn(it);
99-
}
100-
});
96+
project
97+
.getTasks()
98+
.all(
99+
it -> {
100+
if (it.getName().equals("assembleRelease")) {
101+
javadoc.dependsOn(it);
102+
}
103+
});
101104
// Besides third party libraries, firestore depends on the sibling module
102105
// :immutable-collection,
103106
// which needs to be in the classpath when javadoc is run
@@ -148,8 +151,9 @@ private static void applyDoclava(Project project) {
148151
javadoc.setClasspath(
149152
javadoc
150153
.getClasspath()
151-
.plus(getJars(variant.getCompileConfiguration())
152-
.plus(getJars(variant.getRuntimeConfiguration()))));
154+
.plus(
155+
getJars(variant.getCompileConfiguration())
156+
.plus(getJars(variant.getRuntimeConfiguration()))));
153157

154158
// this includes compiled sources which avoids "cannot find symbol" errors
155159
javadoc.setClasspath(
@@ -260,9 +264,12 @@ private static void applyDoclava(Project project) {
260264
}));
261265
project
262266
.getTasks()
263-
.create(TasksKt.JAVADOC_TASK_NAME, task -> {
264-
task.dependsOn(generateJavadoc);
265-
});
267+
.create(
268+
TasksKt.JAVADOC_TASK_NAME,
269+
task -> {
270+
task.dependsOn(generateJavadoc);
271+
createEmptyApiFile(project);
272+
});
266273
}
267274

268275
private static void applyDokka(Project project) {
@@ -275,20 +282,25 @@ private static void applyDokka(Project project) {
275282
private static Task applyDummyJavadoc(Project project) {
276283
return project
277284
.getTasks()
278-
.create(TasksKt.JAVADOC_TASK_NAME, task -> {
279-
task.doLast(
280-
t -> {
281-
File dir = project.file(project.getBuildDir() + "/tmp/javadoc");
282-
project.mkdir(dir);
283-
try {
284-
project.file(dir + "/api.txt").createNewFile();
285-
} catch (IOException e) {
286-
throw new GradleException("Unable to create file", e);
287-
}
288-
});
289-
task.doLast(
290-
t -> project.mkdir(project.getBuildDir() + "/docs/javadoc/reference"));
291-
});
285+
.create(
286+
TasksKt.JAVADOC_TASK_NAME,
287+
task -> {
288+
task.doLast(
289+
t -> {
290+
createEmptyApiFile(project);
291+
});
292+
task.doLast(t -> project.mkdir(project.getBuildDir() + "/docs/javadoc/reference"));
293+
});
294+
}
295+
296+
private static void createEmptyApiFile(Project project) {
297+
File dir = project.file(project.getBuildDir() + "/tmp/javadoc");
298+
project.mkdir(dir);
299+
try {
300+
project.file(dir + "/api.txt").createNewFile();
301+
} catch (IOException e) {
302+
throw new GradleException("Unable to create file", e);
303+
}
292304
}
293305

294306
private static FileCollection getJars(Configuration configuration) {

buildSrc/src/main/java/com/google/firebase/gradle/plugins/ci/ContinuousIntegrationPlugin.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,7 @@ public void apply(Project project) {
3939
Task connectedCheckDependents = sub.task("connectedCheckDependents");
4040
Task deviceCheckDependents = sub.task("deviceCheckDependents");
4141

42-
sub
43-
.getConfigurations()
42+
sub.getConfigurations()
4443
.all(
4544
cfg -> {
4645
if ("releaseUnitTestRuntimeClasspath".equals(cfg.getName())) {

buildSrc/src/main/java/com/google/firebase/gradle/plugins/ci/device/FirebaseTestLabExtension.java

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -14,40 +14,37 @@
1414

1515
package com.google.firebase.gradle.plugins.ci.device;
1616

17-
18-
import org.gradle.api.model.ObjectFactory;
19-
import org.gradle.api.provider.SetProperty;
20-
2117
import java.util.Collections;
2218
import java.util.Set;
23-
2419
import javax.inject.Inject;
20+
import org.gradle.api.model.ObjectFactory;
21+
import org.gradle.api.provider.SetProperty;
2522

2623
public class FirebaseTestLabExtension {
27-
private final SetProperty<String> devices;
28-
private boolean enabled;
24+
private final SetProperty<String> devices;
25+
private boolean enabled;
2926

30-
@Inject
31-
public FirebaseTestLabExtension(ObjectFactory objectFactory) {
32-
devices = objectFactory.setProperty(String.class);
33-
}
27+
@Inject
28+
public FirebaseTestLabExtension(ObjectFactory objectFactory) {
29+
devices = objectFactory.setProperty(String.class);
30+
}
3431

35-
public void setEnabled(boolean value) {
36-
enabled = value;
37-
}
32+
public void setEnabled(boolean value) {
33+
enabled = value;
34+
}
3835

39-
public boolean getEnabled() {
40-
return enabled;
41-
}
36+
public boolean getEnabled() {
37+
return enabled;
38+
}
4239

43-
public void device(String device) {
44-
devices.add(device);
45-
}
40+
public void device(String device) {
41+
devices.add(device);
42+
}
4643

47-
Set<String> getDevices() {
48-
if( devices.get().isEmpty()) {
49-
return Collections.singleton("model=Pixel2,version=27,locale=en,orientation=portrait");
50-
}
51-
return devices.get();
44+
Set<String> getDevices() {
45+
if (devices.get().isEmpty()) {
46+
return Collections.singleton("model=Pixel2,version=27,locale=en,orientation=portrait");
5247
}
48+
return devices.get();
49+
}
5350
}

0 commit comments

Comments
 (0)