Преглед изворни кода

Added atMost infix function

Vadik Sirekanyan пре 2 година
родитељ
комит
c49e487544

+ 9 - 0
build.gradle.kts

@@ -1,3 +1,5 @@
+import org.gradle.kotlin.dsl.support.expectedKotlinDslPluginsVersion
+
 plugins {
     `kotlin-dsl`
     kotlin("plugin.serialization") version embeddedKotlinVersion
@@ -22,6 +24,13 @@ dependencies {
     implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.15.0")
 }
 
+versionCheckerOptions {
+    "org.gradle.kotlin.kotlin-dsl" atMost expectedKotlinDslPluginsVersion
+    "org.jetbrains.kotlin.plugin.serialization" atMost embeddedKotlinVersion
+    "org.jetbrains.kotlin:kotlin-stdlib-jdk8" atMost embeddedKotlinVersion
+    "org.jetbrains.kotlin:kotlin-reflect" atMost embeddedKotlinVersion
+}
+
 gradlePlugin {
     @Suppress("UnstableApiUsage")
     website.set("https://sirekanyan.org/projects/version-checker")

+ 7 - 4
src/main/kotlin/org/sirekanyan/versionchecker/VersionChecker.kt

@@ -6,7 +6,6 @@ import com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PRO
 import com.fasterxml.jackson.dataformat.xml.XmlMapper
 import com.fasterxml.jackson.module.kotlin.registerKotlinModule
 import io.ktor.client.*
-import io.ktor.client.plugins.*
 import io.ktor.client.request.*
 import io.ktor.client.statement.*
 import io.ktor.http.*
@@ -76,9 +75,13 @@ class VersionChecker(
         val response = metadataCache.getValue(createArtifactKey(repository, dependency)) ?: return listOf()
         val metadata = xmlMapper.readValue(response, Metadata::class.java)
         return metadata.getAvailableVersions()
-            .filter { version ->
-                val max = extension.findMax(dependency)
-                max == null || version < max
+            .filter {
+                val lessThanVersion = extension.findLessThanVersion(dependency)
+                lessThanVersion == null || it < lessThanVersion
+            }
+            .filter {
+                val atMostVersion = extension.findAtMostVersion(dependency)
+                atMostVersion == null || it <= atMostVersion
             }
     }
 

+ 17 - 4
src/main/kotlin/org/sirekanyan/versionchecker/VersionCheckerExtension.kt

@@ -6,16 +6,29 @@ import org.sirekanyan.versionchecker.model.toVersion
 
 open class VersionCheckerExtension {
 
-    private val maxMap = mutableMapOf<String, Version>()
+    private val lessThanMap = mutableMapOf<String, Version>()
+    private val atMostMap = mutableMapOf<String, Version>()
 
-    fun findMax(dependency: Dependency): Version? {
+    fun findLessThanVersion(dependency: Dependency): Version? {
         val group = dependency.group
         val name = dependency.name
-        return maxMap["$group:$name"] ?: maxMap["$group"]
+        return lessThanMap["$group:$name"] ?: lessThanMap["$group"]
+    }
+
+    fun findAtMostVersion(dependency: Dependency): Version? {
+        val group = dependency.group
+        val name = dependency.name
+        return atMostMap["$group:$name"] ?: atMostMap["$group"]
     }
 
     infix fun String.lessThan(version: String) {
-        maxMap[this] = checkNotNull(version.toVersion()) {
+        lessThanMap[this] = checkNotNull(version.toVersion()) {
+            "Unsupported version format: $version"
+        }
+    }
+
+    infix fun String.atMost(version: String) {
+        atMostMap[this] = checkNotNull(version.toVersion()) {
             "Unsupported version format: $version"
         }
     }