|
15 | 15 | */
|
16 | 16 | package com.google.firebase.dataconnect.gradle.plugin
|
17 | 17 |
|
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 |
25 | 22 |
|
26 | 23 | sealed interface DataConnectExecutable {
|
27 | 24 |
|
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 |
30 | 28 |
|
| 29 | + data class Version(val version: String) : DataConnectExecutable { |
31 | 30 | 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) |
110 | 33 | }
|
111 | 34 | }
|
112 | 35 |
|
113 |
| - data class File(val file: java.io.File, val verificationInfo: VerificationInfo?) : |
114 |
| - DataConnectExecutable |
| 36 | + @OptIn(ExperimentalSerializationApi::class) |
| 37 | + object VersionsJson { |
115 | 38 |
|
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" |
120 | 41 |
|
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) } |
124 | 43 |
|
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") |
126 | 47 |
|
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 | + ) |
131 | 53 |
|
132 |
| - fun forDefaultVersionWithDefaultVerificationInfo(): Version = |
133 |
| - forVersionWithDefaultVerificationInfo(DEFAULT_VERSION) |
134 |
| - } |
| 54 | + @kotlinx.serialization.Serializable |
| 55 | + data class VerificationInfo(val size: Long, val sha512DigestHex: String) |
135 | 56 | }
|
136 | 57 | }
|
0 commit comments