summaryrefslogtreecommitdiff
path: root/buildSrc
diff options
context:
space:
mode:
authorAmit Kumar <amitkma@e.email>2021-04-27 22:19:39 +0530
committerAmit Kumar <amitkma@e.email>2021-04-27 22:19:39 +0530
commit05fca2863a198db5d58fd55db6c5d7b67fd46e58 (patch)
tree952fa67f0f03adf081ecec55a9c1bc0a920df7d1 /buildSrc
Initial setup
Diffstat (limited to 'buildSrc')
-rw-r--r--buildSrc/build.gradle.kts7
-rw-r--r--buildSrc/src/main/java/foundation/e/privacycentral/buildsrc/DependencyUpdates.kt42
2 files changed, 49 insertions, 0 deletions
diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts
new file mode 100644
index 0000000..445e21f
--- /dev/null
+++ b/buildSrc/build.gradle.kts
@@ -0,0 +1,7 @@
+repositories {
+ jcenter()
+}
+
+plugins {
+ `kotlin-dsl`
+} \ No newline at end of file
diff --git a/buildSrc/src/main/java/foundation/e/privacycentral/buildsrc/DependencyUpdates.kt b/buildSrc/src/main/java/foundation/e/privacycentral/buildsrc/DependencyUpdates.kt
new file mode 100644
index 0000000..852c55c
--- /dev/null
+++ b/buildSrc/src/main/java/foundation/e/privacycentral/buildsrc/DependencyUpdates.kt
@@ -0,0 +1,42 @@
+package foundation.e.privacycentral.buildsrc
+
+enum class ReleaseType(private val level: Int) {
+ SNAPSHOT(0),
+ DEV(1),
+ ALPHA(10),
+ BETA(20),
+ RC(60),
+ RELEASE(100);
+
+ fun isEqualOrMoreStableThan(other: ReleaseType): Boolean = level >= other.level
+
+ fun isLessStableThan(other: ReleaseType): Boolean = level < other.level
+}
+
+object DependencyUpdates {
+ private val stableKeywords = arrayOf("RELEASE", "FINAL", "GA")
+ private val releaseRegex = "^[0-9,.v-]+(-r)?$".toRegex(RegexOption.IGNORE_CASE)
+ private val rcRegex = releaseKeywordRegex("rc")
+ private val betaRegex = releaseKeywordRegex("beta")
+ private val alphaRegex = releaseKeywordRegex("alpha")
+ private val devRegex = releaseKeywordRegex("dev")
+
+ @JvmStatic
+ fun versionToRelease(version: String): ReleaseType {
+ val stableKeyword = stableKeywords.any { version.toUpperCase().contains(it) }
+ if (stableKeyword) return ReleaseType.RELEASE
+
+ return when {
+ releaseRegex.matches(version) -> ReleaseType.RELEASE
+ rcRegex.matches(version) -> ReleaseType.RC
+ betaRegex.matches(version) -> ReleaseType.BETA
+ alphaRegex.matches(version) -> ReleaseType.ALPHA
+ devRegex.matches(version) -> ReleaseType.DEV
+ else -> ReleaseType.SNAPSHOT
+ }
+ }
+
+ private fun releaseKeywordRegex(keyword: String): Regex {
+ return "^[0-9,.v-]+(-$keyword[0-9]*)$".toRegex(RegexOption.IGNORE_CASE)
+ }
+} \ No newline at end of file