Skip to content

Commit 9f5c496

Browse files
authored
Merge pull request #66 from FirebasePrivate/bjornick.gob
Pull in last changes from GoB
2 parents e150d51 + 26025cb commit 9f5c496

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+727
-37
lines changed

buildSrc/devsite_transform.sh

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#Derived from post processing done in granular
2+
set -x
3+
#!/bin/sh -x
4+
grep -rl 'http://' | xargs sed -i 's|http://|//|g'
5+
grep -rl 'https://' | xargs sed -i 's|https://|//|g'
6+
grep -rl 'reference/com/google/' | xargs sed -i 's|reference/com/google/|/docs/reference/android/com/google/|g'
7+
grep -rl '//developers.google.com/android//docs/reference/android/' | xargs sed -i 's|//developers.google.com/android//docs/reference/android/|//developers.google.com/android/reference/|g'
8+
grep -rl '//developers.google.com/android/reference/com/google/firebase/' | xargs sed -i 's|//developers.google.com/android/reference/com/google/firebase/|/docs/reference/android/com/google/firebase/|g'
9+
grep -rl 'href="reference' | xargs sed -i 's|href="reference|href="/docs/reference/android/|g'
10+
grep -rl '/docs/reference/android///developers.google.com/android/reference/' | xargs sed -i 's|/docs/reference/android///developers.google.com/android/reference/|/docs/reference/android/|g'
11+
grep -rl '/docs/reference/android///developer.android.com/reference/' | xargs sed -i 's|/docs/reference/android///developer.android.com/reference/|//developer.android.com/reference/|g'
12+
grep -rl '/docs/reference/android//docs/reference/android/' | xargs sed -i 's|/docs/reference/android//docs/reference/android/|/docs/reference/android/|g'
13+
find . -name '*.html' | xargs sed -i 's/[ \t]*$//' "$@"
14+
# TODO(b/37810114): Remove this hack once b/64612004 is fixed and propagated to our javadoc.
15+
find . -name '*.html' | xargs perl -0777 -p -i -e 's|.+<div class="jd-tagdata">\n(.*\n){1,5}?(?:.+<tr>\n.+\n.+<td><!-- no parameter comment --></td>\n.+</tr>\n)+?(.+\n){1,5}?.*</div>||gm'
16+
find . -name '_toc.yaml' | xargs sed -i 's|"com\.google\.firebase|"firebase|g'
17+
find . -name '_toc.yaml' | xargs sed -i 's|"com\.goo gle\.android\.gms\.|"|g'
18+
find . -name "_toc.yaml" | xargs sed -i 's|path: reference/|path: /docs/reference/android/|g'

buildSrc/gms_transform.sh

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#Derived from post processing done in granular releases
2+
set -x
3+
#!/bin/sh -x
4+
grep -rl 'http://' | xargs sed -i 's|http://|//|g'
5+
grep -rl 'https://' | xargs sed -i 's|https://|//|g'
6+
grep -rl '/docs/reference/android///developers.google.com/' | xargs sed -i 's|/docs/reference/android///developers.google.com||g'
7+
grep -rl '/docs/reference/android/reference' | xargs sed -i 's|/docs/reference/android/reference|/android/reference|g'
8+
grep -rl '//developers.google.com/android/reference/com/google/firebase/' | xargs sed -i 's|//developers.google.com/android/reference/com/google/firebase/|/android/reference/com/google/firebase/|g'
9+
grep -rl '/docs/reference/android///developer.android.com/reference/' | xargs sed -i 's|/docs/reference/android///developer.android.com/reference/|//developer.android.com/reference/|g'
10+
find . -name '*.html' | xargs sed -i 's/[ \t]*$//' "$@"
11+
find . -name '*.html' | xargs perl -0777 -p -i -e 's|.+<div class="jd-tagdata">\n(.*\n){1,5}?(?:.+<tr>\n.+\n.+<td><!-- no parameter comment --></td>\n.+</tr>\n)+?(.+\n){1,5}?.*</div>||gm'
12+
find . -name '_toc.yaml' | xargs sed -i 's|"com\.google\.firebase|"firebase|g'
13+
find . -name '_toc.yaml' | xargs sed -i 's|"com\.google\.android\.gms\.|"|g'i
14+
find . -name "_toc.yaml" | xargs sed -i 's|path: reference/|path: /android/reference/|g'
15+
find . -name "_toc.yaml" | xargs sed -i 's|path: /docs/reference/android/|path: /android/reference/|g'

buildSrc/src/main/groovy/com/google/firebase/gradle/DoclavaPlugin.groovy

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ package com.google.firebase.gradle
22

33
import org.gradle.api.Plugin
44
import org.gradle.api.Project
5+
import org.gradle.api.tasks.Delete
6+
import org.gradle.api.tasks.Exec
7+
import org.gradle.api.tasks.bundling.Zip
58
import org.gradle.api.tasks.javadoc.Javadoc
69

710
/**
@@ -17,8 +20,6 @@ import org.gradle.api.tasks.javadoc.Javadoc
1720
class DoclavaPlugin implements Plugin<Project> {
1821
@Override
1922
void apply(Project project) {
20-
def android = project.android
21-
2223
project.configurations {
2324
javadocCustomConfig
2425
protoliteConfig
@@ -32,12 +33,19 @@ class DoclavaPlugin implements Plugin<Project> {
3233
}
3334

3435
project.task('javadoc', type: Javadoc) {
35-
source = android.sourceSets.main.java.srcDirs
36-
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
36+
3737
// Besides third party libraries, firestore depends on the sibling module :immutable-collection,
3838
// which needs to be in the classpath when javadoc is run
3939
// Ref: https://stackoverflow.com/questions/41076271/javadoc-generation-error-package-does-not-exist-in-multi-module-project
40-
android.libraryVariants.all { variant -> owner.classpath += variant.javaCompile.classpath }
40+
if(LicenseResolverPlugin.isAndroidProject(project)) {
41+
def android = project.android
42+
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
43+
source = android.sourceSets.main.java.srcDirs
44+
android.libraryVariants.all { variant -> owner.classpath += variant.javaCompile.classpath }
45+
} else {
46+
source = project.sourceSets.main.allJava
47+
owner.classpath = project.sourceSets.main.compileClasspath
48+
}
4149

4250
// TODO(ashwinraghav): Investigate why this is needed
4351
// Details at : b/77907758
@@ -94,6 +102,10 @@ class DoclavaPlugin implements Plugin<Project> {
94102
federationApiFiles << ['Google Play services', project.getProperties().
95103
get('google_play_services_api_file')]
96104
}
105+
if (project.hasProperty('tasks_api_file')) {
106+
federationUrls << ['Tasks', 'https://developers.google.com/android']
107+
federationApiFiles << ['Tasks', project.getProperties().get('tasks_api_file')]
108+
}
97109

98110
// set federated links for external projects that need to be linked
99111
options.addMultilineMultiValueOption("federate").setValue(federationUrls)
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package com.google.firebase.gradle
2+
3+
import org.gradle.api.DefaultTask
4+
import org.gradle.api.tasks.OutputDirectory
5+
import org.gradle.api.tasks.TaskAction
6+
import org.gradle.api.tasks.incremental.IncrementalTaskInputs
7+
8+
class GenerateGranularLibraryBuildTask extends DefaultTask {
9+
@OutputDirectory
10+
File outputDir
11+
12+
@TaskAction
13+
void execute(IncrementalTaskInputs inputs) {
14+
if (!outputDir.exists()) {
15+
outputDir.mkdirs()
16+
}
17+
18+
File buildFile = new File("${outputDir.absolutePath}/BUILD")
19+
buildFile.write("""# Build file for generating AARs
20+
licenses(["unencumbered"]) # Google owned.
21+
22+
package(
23+
default_visibility = [
24+
"//java/com/google/android/gmscore:gmscore_packages",
25+
],
26+
)
27+
28+
pkg_library(
29+
# Contents of AAR file
30+
name = "aar_files"
31+
srcs = glob([
32+
# Below files are optional for a drop.
33+
"proguard.txt", # buildozer: disable=constant-glob
34+
"res/**/*",
35+
"assets/**/*",
36+
"jni/**/*",
37+
# Third party licenses files are required
38+
# (see http://go/gmscore-third-party-licenses#gmscore-client-third-party-licenses),
39+
# except for clients we generate that do not include their own srcs/deps
40+
"third_party_licenses.json", # buildozer: disable=constant-glob
41+
"third_party_licenses.txt", # buildozer: disable=constant-glob
42+
]) + [
43+
# Below files are required for a drop.
44+
"AndroidManifest.xml",
45+
"R.txt",
46+
"classes.jar",
47+
],
48+
flatten = 0,
49+
tags = [
50+
"AndroidAAR",
51+
"Prebuilt",
52+
],
53+
)
54+
55+
genzip(
56+
# AAR artifact.
57+
name = "lib.aar",
58+
deps = [":aar_files"],
59+
)
60+
""")
61+
}
62+
63+
}
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
package com.google.firebase.gradle
2+
3+
import org.gradle.api.DefaultTask
4+
import org.gradle.api.Project
5+
import org.gradle.api.tasks.Input
6+
import org.gradle.api.tasks.OutputDirectory
7+
import org.gradle.api.tasks.TaskAction
8+
import org.gradle.api.tasks.incremental.IncrementalTaskInputs
9+
10+
import java.lang.reflect.Array;
11+
12+
13+
class GenerateGranularLibraryConfigTask extends DefaultTask {
14+
@Input
15+
List<String> projects
16+
17+
@OutputDirectory
18+
File outputDir
19+
20+
@TaskAction
21+
void execute(IncrementalTaskInputs inputs) {
22+
List<Project> projectsToRelease = projects.collect {
23+
project.project(it)
24+
}
25+
List<GranularLibraryConfig> configs = projectsToRelease.collect {
26+
def configs = it.configurations.findAll {
27+
it.name == 'implementation'
28+
}
29+
30+
def deps = configs.collect {
31+
new ArrayList(it.getAllDependencies())
32+
}.flatten()
33+
return new GranularLibraryConfig(
34+
name: it.ext.prebuiltLibName, version: it.version, externalName: it.name,
35+
deps: deps)
36+
}
37+
if (!outputDir.exists()) {
38+
outputDir.mkdirs()
39+
}
40+
File configFile = new File("${outputDir.absolutePath}/drop_config.pbascii")
41+
configFile.write """library_groups {
42+
${configs.collect { it.toPbAscii(2) }.join('\n')}
43+
name: "fireescape"
44+
}
45+
"""
46+
writeBuildFile()
47+
}
48+
49+
void writeBuildFile() {
50+
File buildFile = new File("${outputDir.absolutePath}/BUILD")
51+
buildFile.write '''
52+
# A package that defines the library groups for this drop
53+
licenses(["unencumbered"]) # Google owned.
54+
package(
55+
default_visibility = [
56+
"//java/com/google/android/gmscore:gmscore_packages",
57+
],
58+
)
59+
60+
pkg_library(
61+
name = "fireescape_library_group_info",
62+
srcs = [
63+
":static_config",
64+
],
65+
flatten = True,
66+
)
67+
68+
genrule(
69+
name = "static_config",
70+
srcs = [":drop_config.pbascii"],
71+
outs = ["//gmscore/sdk/stage/common:library_groups.pbascii"],
72+
cmd = "set -x; cp $(location //gmscore/sdk/stage/common:drop_config.pbascii) \"$@\"",
73+
output_to_bindir = True,
74+
tools = ["//third_party/zip"],
75+
)
76+
'''
77+
}
78+
79+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package com.google.firebase.gradle
2+
3+
import groovy.transform.Immutable
4+
import org.gradle.api.artifacts.Dependency
5+
6+
/**
7+
* Generates a library config pbascii needed for the granular build rules.
8+
*/
9+
@Immutable
10+
class GranularLibraryConfig implements Serializable {
11+
String name;
12+
String version;
13+
String externalName;
14+
List<Dependency> deps;
15+
16+
String toPbAscii(int indent) {
17+
String braceIndent = ' '.multiply(indent)
18+
String lineIndent = braceIndent + ' '.multiply(4)
19+
return """
20+
${braceIndent}members {
21+
${lineIndent}drop_aar_target: "//gmscore/sdk/stage/fireescape/${name}:lib.aar
22+
${lineIndent}in_third_party_sdk: true
23+
${lineIndent}sdk_group_id: "com.google.firebase"
24+
${lineIndent}name: "${name}"
25+
${lineIndent}publicly_releasable: true
26+
${lineIndent}version: "${version}"
27+
${lineIndent}external_name: "${externalName}"
28+
${lineIndent}external_deps: [${depsToPbAscii(indent + 4)}
29+
${lineIndent}]
30+
${braceIndent}}"""
31+
}
32+
33+
String depsToPbAscii(int indent) {
34+
String braceIndent = ' '.multiply(indent)
35+
// Add 5 spaces instead of 4 to account for the brace on the preceding line.
36+
String lineIndent = braceIndent + ' '.multiply(5)
37+
List<String> depStrings = new ArrayList<>()
38+
deps.each {
39+
depStrings.add("""\n$braceIndent{
40+
${lineIndent}group_id: "${it.group}"
41+
${lineIndent}artifact_id: "${it.name}"
42+
${lineIndent}version: "${it.version}"
43+
${lineIndent}type: "${typeFromDep(it)}"
44+
${braceIndent}}""")
45+
}
46+
return depStrings.join(',')
47+
}
48+
49+
static String typeFromDep(Dependency dep) {
50+
String type
51+
if (dep.group == 'com.google.firebase' || dep.group == 'com.google.android.gms') {
52+
type = 'aar'
53+
} else {
54+
type = 'jar'
55+
}
56+
return type
57+
}
58+
}

0 commit comments

Comments
 (0)