From 05fca2863a198db5d58fd55db6c5d7b67fd46e58 Mon Sep 17 00:00:00 2001 From: Amit Kumar Date: Tue, 27 Apr 2021 22:19:39 +0530 Subject: Initial setup --- .../e/privacycentral/buildsrc/DependencyUpdates.kt | 42 ++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 buildSrc/src/main/java/foundation/e/privacycentral/buildsrc/DependencyUpdates.kt (limited to 'buildSrc/src') 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 -- cgit v1.2.1