]> nmode's Git Repositories - signal-cli/commitdiff
Extract checkLibVersions task to gradle plugin
authorAsamK <asamk@gmx.de>
Sat, 23 Jan 2021 16:59:50 +0000 (17:59 +0100)
committerAsamK <asamk@gmx.de>
Sat, 23 Jan 2021 22:29:18 +0000 (23:29 +0100)
build.gradle.kts
buildSrc/build.gradle.kts [new file with mode: 0644]
buildSrc/src/main/kotlin/CheckLibVersionsPlugin.kt [new file with mode: 0644]
lib/build.gradle.kts

index 8a3a8aaee84b0418a5f57110c6517895791ffba7..052e3c22994dea8eb205045435222b714bf27b17 100644 (file)
@@ -2,6 +2,7 @@ plugins {
     java
     application
     eclipse
+    `check-lib-versions`
 }
 
 version = "0.7.4"
@@ -57,39 +58,6 @@ tasks.withType<JavaExec> {
     }
 }
 
-// Find any 3rd party libraries which have released new versions
-// to the central Maven repo since we last upgraded.
-val checkLibVersions by tasks.registering {
-    doLast {
-        val checked = kotlin.collections.HashSet<Dependency>()
-        allprojects {
-            configurations.forEach { configuration ->
-                configuration.allDependencies.forEach { dependency ->
-                    val version = dependency.version
-                    if (!checked.contains(dependency)) {
-                        val group = dependency.group
-                        val path = group?.replace(".", "/") ?: ""
-                        val name = dependency.name
-                        val metaDataUrl = "https://repo1.maven.org/maven2/$path/$name/maven-metadata.xml"
-                        try {
-                            val url = org.codehaus.groovy.runtime.ResourceGroovyMethods.toURL(metaDataUrl)
-                            val metaDataText = org.codehaus.groovy.runtime.ResourceGroovyMethods.getText(url)
-                            val metadata = groovy.util.XmlSlurper().parseText(metaDataText)
-                            val newest = (metadata.getProperty("versioning") as groovy.util.slurpersupport.GPathResult).getProperty("latest")
-                            if (version != newest.toString()) {
-                                println("UPGRADE {\"group\": \"$group\", \"name\": \"$name\", \"current\": \"$version\", \"latest\": \"$newest\"}")
-                            }
-                        } catch (e: Throwable) {
-                            logger.debug("Unable to download or parse $metaDataUrl: $e.message")
-                        }
-                        checked.add(dependency)
-                    }
-                }
-            }
-        }
-    }
-}
-
 val assembleNativeImage by tasks.registering {
     dependsOn("assemble")
 
diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts
new file mode 100644 (file)
index 0000000..1d88ae7
--- /dev/null
@@ -0,0 +1,16 @@
+plugins {
+    `kotlin-dsl`
+}
+
+repositories {
+    jcenter()
+}
+
+gradlePlugin {
+    plugins {
+        register("check-lib-versions") {
+            id = "check-lib-versions"
+            implementationClass = "CheckLibVersionsPlugin"
+        }
+    }
+}
diff --git a/buildSrc/src/main/kotlin/CheckLibVersionsPlugin.kt b/buildSrc/src/main/kotlin/CheckLibVersionsPlugin.kt
new file mode 100644 (file)
index 0000000..701bd6e
--- /dev/null
@@ -0,0 +1,39 @@
+import groovy.util.XmlSlurper
+import groovy.util.slurpersupport.GPathResult
+import org.codehaus.groovy.runtime.ResourceGroovyMethods
+import org.gradle.api.Plugin
+import org.gradle.api.Project
+import org.gradle.api.Task
+import org.gradle.api.artifacts.Dependency
+
+class CheckLibVersionsPlugin : Plugin<Project> {
+    override fun apply(project: Project) {
+        project.task("checkLibVersions") {
+            description = "Find any 3rd party libraries which have released new versions to the central Maven repo since we last upgraded."
+            doLast {
+                project.configurations.flatMap { it.allDependencies }
+                        .toSet()
+                        .forEach { checkDependency(it) }
+            }
+        }
+    }
+
+    private fun Task.checkDependency(dependency: Dependency) {
+        val version = dependency.version
+        val group = dependency.group
+        val path = group?.replace(".", "/") ?: ""
+        val name = dependency.name
+        val metaDataUrl = "https://repo1.maven.org/maven2/$path/$name/maven-metadata.xml"
+        try {
+            val url = ResourceGroovyMethods.toURL(metaDataUrl)
+            val metaDataText = ResourceGroovyMethods.getText(url)
+            val metadata = XmlSlurper().parseText(metaDataText)
+            val newest = (metadata.getProperty("versioning") as GPathResult).getProperty("latest")
+            if (version != newest.toString()) {
+                println("UPGRADE {\"group\": \"$group\", \"name\": \"$name\", \"current\": \"$version\", \"latest\": \"$newest\"}")
+            }
+        } catch (e: Throwable) {
+            logger.debug("Unable to download or parse $metaDataUrl: $e.message")
+        }
+    }
+}
index 5eb6c9b448e1ad03a16dcea2391a62a4dfa63f73..c5d46c4f28a4583f0adb9b60cad1caf05cf1dd3d 100644 (file)
@@ -1,5 +1,6 @@
 plugins {
     `java-library`
+    `check-lib-versions`
 }
 
 java {