Skip to content

Commit 96668a9

Browse files
authored
Merge branch 'main' into rl.vertex.no.sealed.classes
2 parents e14ca26 + bb5a4d4 commit 96668a9

File tree

14 files changed

+317
-394
lines changed

14 files changed

+317
-394
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ buildscript {
4040
classpath 'com.google.gms:google-services:4.3.15'
4141
classpath 'com.google.firebase:firebase-appdistribution-gradle:5.0.0'
4242
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.5'
43-
classpath "com.diffplug.spotless:spotless-plugin-gradle:7.0.0.BETA1"
43+
classpath libs.spotless.plugin.gradle
4444
}
4545
}
4646

buildSrc/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
plugins {
1616
id("com.ncorti.ktfmt.gradle") version "0.11.0"
17-
kotlin("plugin.serialization") version "1.8.22"
17+
alias(libs.plugins.kotlinx.serialization)
1818
`kotlin-dsl`
1919
}
2020

firebase-dataconnect/gradleplugin/gradle/libs.versions.toml

Lines changed: 0 additions & 2 deletions
This file was deleted.

firebase-dataconnect/gradleplugin/plugin/build.gradle.kts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,17 @@
1717
plugins {
1818
`java-gradle-plugin`
1919
alias(firebaseLibs.plugins.kotlin.jvm)
20-
alias(libs.plugins.spotless)
20+
alias(firebaseLibs.plugins.kotlinx.serialization)
21+
alias(firebaseLibs.plugins.spotless)
2122
}
2223

2324
java { toolchain { languageVersion.set(JavaLanguageVersion.of(17)) } }
2425

2526
dependencies {
2627
compileOnly(firebaseLibs.android.gradlePlugin.gradle.api)
2728
implementation(gradleKotlinDsl())
29+
implementation(firebaseLibs.kotlinx.serialization.core)
30+
implementation(firebaseLibs.kotlinx.serialization.json)
2831
}
2932

3033
gradlePlugin {

firebase-dataconnect/gradleplugin/plugin/src/main/kotlin/com/google/firebase/dataconnect/gradle/plugin/DataConnectDslExtension.kt

Lines changed: 3 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,6 @@ abstract class DataConnectDslExtension @Inject constructor(objectFactory: Object
8989
var version: String?
9090
var file: File?
9191
var regularFile: RegularFile?
92-
var fileSizeInBytes: Long?
93-
var sha512DigestHex: String?
94-
var verificationEnabled: Boolean
9592
}
9693

9794
private class DataConnectExecutableBuilderImpl(initialValues: DataConnectExecutable?) :
@@ -121,29 +118,16 @@ abstract class DataConnectDslExtension @Inject constructor(objectFactory: Object
121118
_regularFile = value
122119
}
123120

124-
override var fileSizeInBytes: Long? = null
125-
override var sha512DigestHex: String? = null
126-
override var verificationEnabled: Boolean = true
127-
128121
fun updateFrom(info: DataConnectExecutable.File) {
129122
file = info.file
130-
updateFrom(info.verificationInfo)
131123
}
132124

133125
fun updateFrom(info: DataConnectExecutable.RegularFile) {
134126
regularFile = info.file
135-
updateFrom(info.verificationInfo)
136127
}
137128

138129
fun updateFrom(info: DataConnectExecutable.Version) {
139130
version = info.version
140-
updateFrom(info.verificationInfo)
141-
}
142-
143-
fun updateFrom(info: DataConnectExecutable.VerificationInfo?) {
144-
verificationEnabled = info !== null
145-
fileSizeInBytes = info?.fileSizeInBytes
146-
sha512DigestHex = info?.sha512DigestHex
147131
}
148132

149133
init {
@@ -159,9 +143,6 @@ abstract class DataConnectDslExtension @Inject constructor(objectFactory: Object
159143
val version = version
160144
val file = file
161145
val regularFile = regularFile
162-
val fileSizeInBytes = fileSizeInBytes
163-
val sha512DigestHex = sha512DigestHex
164-
val verificationEnabled = verificationEnabled
165146

166147
if (version === null && file === null && regularFile === null) {
167148
return null
@@ -195,41 +176,12 @@ abstract class DataConnectDslExtension @Inject constructor(objectFactory: Object
195176
)
196177
}
197178

198-
val verificationInfo: DataConnectExecutable.VerificationInfo? =
199-
if (!verificationEnabled) {
200-
null
201-
} else if (fileSizeInBytes === null && sha512DigestHex === null) {
202-
if (version !== null) {
203-
DataConnectExecutable.VerificationInfo.forVersion(version)
204-
} else {
205-
throw DataConnectGradleException(
206-
"8s9venv4ch",
207-
"Both 'fileSizeInBytes' and 'sha512DigestHex' were null" +
208-
" but _both_ must be set when verificationEnabled==true" +
209-
" and file!=null or regularFile!=null" +
210-
" (file=$file regularFile=$regularFile)"
211-
)
212-
}
213-
} else if (fileSizeInBytes === null || sha512DigestHex === null) {
214-
throw DataConnectGradleException(
215-
"gjzykv9pqq",
216-
"Both 'fileSizeInBytes' and 'sha512DigestHex' have to be set or both unset" +
217-
" when verificationEnabled==true, but one of them was set and the other was not" +
218-
" (fileSizeInBytes=$fileSizeInBytes, sha512DigestHex=$sha512DigestHex)"
219-
)
220-
} else {
221-
DataConnectExecutable.VerificationInfo(
222-
fileSizeInBytes = fileSizeInBytes,
223-
sha512DigestHex = sha512DigestHex,
224-
)
225-
}
226-
227179
return if (version !== null) {
228-
DataConnectExecutable.Version(version = version, verificationInfo = verificationInfo)
180+
DataConnectExecutable.Version(version = version)
229181
} else if (file !== null) {
230-
DataConnectExecutable.File(file = file, verificationInfo = verificationInfo)
182+
DataConnectExecutable.File(file = file)
231183
} else if (regularFile !== null) {
232-
DataConnectExecutable.RegularFile(file = regularFile, verificationInfo = verificationInfo)
184+
DataConnectExecutable.RegularFile(file = regularFile)
233185
} else {
234186
throw DataConnectGradleException(
235187
"yg49q5nzxt",

firebase-dataconnect/gradleplugin/plugin/src/main/kotlin/com/google/firebase/dataconnect/gradle/plugin/DataConnectExecutable.kt

Lines changed: 25 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -15,122 +15,43 @@
1515
*/
1616
package com.google.firebase.dataconnect.gradle.plugin
1717

18-
import java.io.Serializable
19-
20-
// The following command was used to generate the `serialVersionUID` constants for each class.
21-
// serialver -classpath \
22-
// plugin/build/classes/kotlin/main:$(find $HOME/.gradle/wrapper/dists -name
23-
// gradle-core-api-8.5.jar -printf '%p:') \
24-
// com.google.firebase.dataconnect.gradle.plugin.DataConnectExecutableInput\${VerificationInfo,File,RegularFile,Version}
18+
import java.io.InputStream
19+
import kotlinx.serialization.ExperimentalSerializationApi
20+
import kotlinx.serialization.json.Json
21+
import kotlinx.serialization.json.decodeFromStream
2522

2623
sealed interface DataConnectExecutable {
2724

28-
data class VerificationInfo(val fileSizeInBytes: Long, val sha512DigestHex: String) :
29-
Serializable {
25+
data class File(val file: java.io.File) : DataConnectExecutable
26+
27+
data class RegularFile(val file: org.gradle.api.file.RegularFile) : DataConnectExecutable
3028

29+
data class Version(val version: String) : DataConnectExecutable {
3130
companion object {
32-
fun forVersion(version: String): VerificationInfo =
33-
when (version) {
34-
"1.3.4" ->
35-
VerificationInfo(
36-
fileSizeInBytes = 24_125_592L,
37-
sha512DigestHex =
38-
"3ec9317db593ebeacfea9756cdd08a02849296fbab67f32f3d811a766be6ce2506f" +
39-
"c7a0cf5f5ea880926f0c4defa5ded965268f5dfe5d07eb80cef926f216c7e"
40-
)
41-
"1.3.5" ->
42-
VerificationInfo(
43-
fileSizeInBytes = 24_146_072L,
44-
sha512DigestHex =
45-
"630391e3c50568cca36e562e51b300e673fa7190c0cae0475a03e4af4003babe711" +
46-
"98c5b0309ecd261b3a3362e8c4d49bdb6cbc6f2b2d3297444112a018a0c10"
47-
)
48-
"1.3.6" ->
49-
VerificationInfo(
50-
fileSizeInBytes = 24_785_048L,
51-
sha512DigestHex =
52-
"77b2fd79a8a70e47defb1592a092c63642fda6c33715f1977d7a44daed3d7e181c3" +
53-
"870aad0fee7b035aabea7778a244135ab3e633247ccd5f937105f6d495a26"
54-
)
55-
"1.3.7" ->
56-
VerificationInfo(
57-
fileSizeInBytes = 24_928_408L,
58-
sha512DigestHex =
59-
"99d9774f3b29a6845f0e096893d1205e69b6f8654797a3fc7d54d22e8f7059d1b65" +
60-
"49ae23b8e8f18c952c1c7d25a07b0b8b29a957abd97e1a79c703448497cef"
61-
)
62-
"1.3.8" ->
63-
VerificationInfo(
64-
fileSizeInBytes = 24_940_696L,
65-
sha512DigestHex =
66-
"aea3583ebe1a36938eec5164de79405951ddf05b70a857ddb4f346f1424666f1d96" +
67-
"989a5f81326c7e2aef4a195d31ff356fdf2331ed98fa1048c4bd469cbfd97"
68-
)
69-
"1.3.9" ->
70-
VerificationInfo(
71-
fileSizeInBytes = 24_977_560L,
72-
sha512DigestHex =
73-
"4558928c2a84b54113e0d6918907eb75bdeb9bd059dcc4b6f22cb4a7c9c7421a357" +
74-
"7f3b0d2eeb246b1df739b38f1eb91e5a6166b0e559707746d79e6ccdf9ed4"
75-
)
76-
"1.4.0" ->
77-
VerificationInfo(
78-
fileSizeInBytes = 25_018_520L,
79-
sha512DigestHex =
80-
"c06ccade89cb46459452f71c6d49a01b4b30c9f96cc4cb770ed168e7420ef0cb368" +
81-
"cd602ff596137e6586270046cf0ffd9f8d294e44b036e5c5b373a074b7e5a"
82-
)
83-
"1.4.1" ->
84-
VerificationInfo(
85-
fileSizeInBytes = 25_034_904L,
86-
sha512DigestHex =
87-
"f4a16aca3a68c431407fc88a900940c73612a0046d9603ca80195c8c9641ee38fd8" +
88-
"1b67cc158af600e173de1abc3cb0df9377b1a6012c808ab0871bb1bdbc0b1"
89-
)
90-
"1.4.2" ->
91-
VerificationInfo(
92-
fileSizeInBytes = 25_034_904L,
93-
sha512DigestHex =
94-
"24ee2db55a034dcb95000715919e1dc35c91403000dbd3b912e6b5b55587b862eca" +
95-
"886bb1ca86e19cdaa25c77c29492e5d3b0c740c8649a90297cf84e9c9123b"
96-
)
97-
"1.4.3" ->
98-
VerificationInfo(
99-
fileSizeInBytes = 25_034_904L,
100-
sha512DigestHex =
101-
"c25fd2cb9ef4896cadc05fab79f767f8fc8212e3b967f2ae535855befd63339539a" +
102-
"4f6cd648743c024f40139b668cc69fb9c6691490259664af5821d116896cf"
103-
)
104-
else ->
105-
throw DataConnectGradleException(
106-
"3svd27ch8y",
107-
"File size and SHA512 digest is not known for version: $version"
108-
)
109-
}
31+
val default: Version
32+
get() = Version(VersionsJson.load().default)
11033
}
11134
}
11235

113-
data class File(val file: java.io.File, val verificationInfo: VerificationInfo?) :
114-
DataConnectExecutable
36+
@OptIn(ExperimentalSerializationApi::class)
37+
object VersionsJson {
11538

116-
data class RegularFile(
117-
val file: org.gradle.api.file.RegularFile,
118-
val verificationInfo: VerificationInfo?
119-
) : DataConnectExecutable
39+
const val RESOURCE_PATH =
40+
"com/google/firebase/dataconnect/gradle/plugin/DataConnectExecutableVersions.json"
12041

121-
data class Version(val version: String, val verificationInfo: VerificationInfo?) :
122-
DataConnectExecutable {
123-
companion object {
42+
fun load(): Root = openFile().use { Json.decodeFromStream<Root>(it) }
12443

125-
private const val DEFAULT_VERSION = "1.4.3"
44+
private fun openFile(): InputStream =
45+
this::class.java.classLoader.getResourceAsStream(RESOURCE_PATH)
46+
?: throw DataConnectGradleException("antkaw2gjp", "resource not found: $RESOURCE_PATH")
12647

127-
fun forVersionWithDefaultVerificationInfo(version: String): Version {
128-
val verificationInfo = DataConnectExecutable.VerificationInfo.forVersion(version)
129-
return Version(version, verificationInfo)
130-
}
48+
@kotlinx.serialization.Serializable
49+
data class Root(
50+
val default: String,
51+
val versions: Map<String, VerificationInfo>,
52+
)
13153

132-
fun forDefaultVersionWithDefaultVerificationInfo(): Version =
133-
forVersionWithDefaultVerificationInfo(DEFAULT_VERSION)
134-
}
54+
@kotlinx.serialization.Serializable
55+
data class VerificationInfo(val size: Long, val sha512DigestHex: String)
13556
}
13657
}

0 commit comments

Comments
 (0)