@@ -5,8 +5,8 @@ import org.ajoberstar.grgit.gradle.GrgitPlugin
5
5
import org.gradle.api.GradleException
6
6
import org.gradle.api.Plugin
7
7
import org.gradle.api.Project
8
+ import org.gradle.api.tasks.Delete
8
9
import org.gradle.api.tasks.bundling.Zip
9
- import org.gradle.api.tasks.Copy
10
10
11
11
/**
12
12
* Orchestrates our release process by automating validations, documentation and artifact
@@ -49,6 +49,16 @@ class MultiProjectReleasePlugin implements Plugin<Project> {
49
49
50
50
def releaseName = System . getProperty(' releaseName' , new Date (). format(' dd-MM-yyyy' ))
51
51
def releaseFromBranch = System . getProperty(' releaseFromBranch' , ' master' )
52
+ def releaseJavadocs = System . getProperty(' releaseJavadocs' , ' true' ). toBoolean()
53
+
54
+ def firebaseDevsiteJavadoc = new File (project. buildDir," firebase-javadocs/" )
55
+ firebaseDevsiteJavadoc. mkdirs()
56
+ def gmsDevsiteJavadoc = new File ( project. buildDir," gms-javadocs/" )
57
+ gmsDevsiteJavadoc. mkdirs()
58
+ def firebaseClientBuildDest = new File (firebaseDevsiteJavadoc, " client/" )
59
+ firebaseClientBuildDest. mkdirs()
60
+ def gmsClientBuildDest = new File (gmsDevsiteJavadoc, " client/" )
61
+ gmsClientBuildDest. mkdirs()
52
62
53
63
project. subprojects { it. apply plugin : VersioningPlugin }
54
64
project. afterEvaluate {
@@ -71,15 +81,19 @@ class MultiProjectReleasePlugin implements Plugin<Project> {
71
81
def testSampleAppStartupCrash = project. task(' testSampleAppStartup' ) {
72
82
description " Test sample app for crashes"
73
83
74
- projectsToRelease. each {
75
- it. afterEvaluate {
76
- if (it. plugins. hasPlugin(LaunchSampleAppPlugin )) {
77
- dependsOn(" $it . path :$LaunchSampleAppPlugin . LAUNCH_SAMPLE_APP " as String )
84
+ if (! System . getProperty(' skipSampleAppTests' , ' false' ). toBoolean()) {
85
+ projectsToRelease. each {
86
+ it. afterEvaluate {
87
+ if (it. plugins. hasPlugin(LaunchSampleAppPlugin )) {
88
+ dependsOn(" $it . path :$LaunchSampleAppPlugin . LAUNCH_SAMPLE_APP " as String )
89
+
90
+ }
78
91
}
79
92
}
80
93
}
81
94
}
82
95
96
+
83
97
def removeAllFromMavenLocal = project. task(' removeAllFromMavenLocal' ) {
84
98
projectsToRelease. each {
85
99
it. afterEvaluate {
@@ -147,7 +161,7 @@ class MultiProjectReleasePlugin implements Plugin<Project> {
147
161
148
162
def publishArtifacts = project. task(' publishArtifacts' ) {
149
163
mustRunAfter(performPreReleaseCommits)
150
- dependsOn projectsToRelease. collect {
164
+ dependsOn projectsToRelease. collect {
151
165
" $it . path :publishMavenJavaReleasePublicationToBuildRepository" as String
152
166
}
153
167
}
@@ -160,12 +174,117 @@ class MultiProjectReleasePlugin implements Plugin<Project> {
160
174
161
175
}
162
176
163
- def g3DestDir = " ${ System.getProperty('g3dir')} /gmscore/sdk/stage/fireescape/"
164
-
165
177
def generatePrebuiltsConfig = project. task(" generatePrebuiltsConfig" , type : GenerateGranularLibraryConfigTask ) {
166
178
mustRunAfter(dropArtifactsInPrebuiltsStaging)
167
179
projects = projectNames
168
- outputDir = new File (g3DestDir)
180
+ outputDir = new File (project. buildDir, " prebuilts-config/" )
181
+ }
182
+
183
+ def generatePrebuiltsConfigZip = project. task(type : Zip , ' generatePrebuiltsConfigZip' ) {
184
+ dependsOn generatePrebuiltsConfig
185
+ from new File (project. buildDir, " prebuilts-config/" )
186
+ include ' **/*'
187
+ archiveName " $project . buildDir /prebuilts-config.zip"
188
+ }
189
+
190
+ def generateAllJavadocs = project. task(' generateAllJavadocs' ) {
191
+ dependsOn projectsToRelease. collect {
192
+ " $it . path :javadoc" as String
193
+ }
194
+ mustRunAfter publishArtifacts
195
+
196
+ doLast {
197
+ project. copy {
198
+ from projectsToRelease. collect {
199
+ " $it . buildDir /docs/javadoc/reference"
200
+ }
201
+ include ' **/*'
202
+ into firebaseDevsiteJavadoc
203
+ }
204
+
205
+ project. copy {
206
+ from projectsToRelease. collect {
207
+ " $it . buildDir /docs/javadoc/reference"
208
+ }
209
+ include ' **/*'
210
+ into gmsDevsiteJavadoc
211
+ }
212
+
213
+ projectsToRelease. collect { p ->
214
+ p. copy {
215
+ from " $p. buildDir /docs/javadoc/reference/_toc.yaml"
216
+ include ' **/*'
217
+ into " $firebaseClientBuildDest /$p. name "
218
+ }
219
+
220
+ p. copy {
221
+ from " $p. buildDir /docs/javadoc/reference/_toc.yaml"
222
+ include ' **/*'
223
+ into " $gmsClientBuildDest /$p. name "
224
+ }
225
+ }
226
+ }
227
+ }
228
+
229
+ def prepareJavadocs = project. task(' prepareJavadocs' , type : Delete ) {
230
+ dependsOn generateAllJavadocs
231
+ doLast {
232
+ // cleanup docs
233
+ project. delete {
234
+ def relativeDeletablePaths = [
235
+ " timestamp.js" , " navtree_data.js" , " assets/" ,
236
+ " classes.html" , " hierarchy.html" ,
237
+ " lists.js" , " package-list" ,
238
+ " packages.html" , " index.html" ,
239
+ " current.xml" , " _toc.yaml" ]
240
+
241
+ delete relativeDeletablePaths. collectMany {
242
+ [" $firebaseDevsiteJavadoc . path /$it " , " $gmsDevsiteJavadoc . path /$it " ]
243
+ }
244
+ }
245
+
246
+ // Transform
247
+ project. exec {
248
+ ignoreExitValue true
249
+ workingDir firebaseDevsiteJavadoc
250
+ commandLine " ${ project.rootProject.file("buildSrc").path} /devsite_transform.sh"
251
+ }
252
+
253
+ project. exec {
254
+ ignoreExitValue true
255
+ workingDir gmsDevsiteJavadoc
256
+ commandLine " ${ project.rootProject.file("buildSrc").path} /gms_transform.sh"
257
+ }
258
+
259
+ // Tidy
260
+ if (project. hasProperty(' tidyScript' )) {
261
+ project. exec {
262
+ ignoreExitValue true
263
+ workingDir firebaseDevsiteJavadoc
264
+ commandLine project. getProperties(). get(' tidyScript' ), " ."
265
+ }
266
+
267
+ project. exec {
268
+ ignoreExitValue true
269
+ workingDir gmsDevsiteJavadoc
270
+ commandLine project. getProperties(). get(' tidyScript' ), " ."
271
+ }
272
+ }
273
+ }
274
+ }
275
+
276
+ def assembleFirebaseJavadocZip = project. task(type : Zip , ' assembleFirebaseJavadocZip' ) {
277
+ dependsOn prepareJavadocs
278
+ from firebaseDevsiteJavadoc
279
+ include ' **/*'
280
+ archiveName " $project . buildDir /firebase-javadocs.zip"
281
+ }
282
+
283
+ def assembleGmsJavadocZip = project. task(type : Zip , ' assembleGmsJavadocZip' ) {
284
+ dependsOn prepareJavadocs
285
+ from gmsDevsiteJavadoc
286
+ include ' **/*'
287
+ archiveName " $project . buildDir /gms-javadocs.zip"
169
288
}
170
289
171
290
// TODO(ashwinraghav) : Move proguard into versioned directory to avoid having to look
@@ -219,9 +338,13 @@ class MultiProjectReleasePlugin implements Plugin<Project> {
219
338
dependsOn checkoutBranch
220
339
dependsOn performPreReleaseCommits
221
340
dependsOn assembleMavenRepoZip
341
+ if (releaseJavadocs) {
342
+ dependsOn assembleGmsJavadocZip
343
+ dependsOn assembleFirebaseJavadocZip
344
+ }
222
345
dependsOn performPostReleaseCommits
223
- dependsOn generatePrebuiltsConfig
346
+ dependsOn generatePrebuiltsConfigZip
224
347
}
225
348
}
226
349
}
227
- }
350
+ }
0 commit comments