]> nmode's Git Repositories - signal-cli/blob - buildSrc/src/main/kotlin/CheckLibVersionsPlugin.kt
Add new svr2 mrenclave
[signal-cli] / buildSrc / src / main / kotlin / CheckLibVersionsPlugin.kt
1 @file:Suppress("DEPRECATION")
2
3 import groovy.util.XmlSlurper
4 import groovy.util.slurpersupport.GPathResult
5 import org.codehaus.groovy.runtime.ResourceGroovyMethods
6 import org.gradle.api.Plugin
7 import org.gradle.api.Project
8 import org.gradle.api.Task
9 import org.gradle.api.artifacts.Dependency
10
11 class CheckLibVersionsPlugin : Plugin<Project> {
12 override fun apply(project: Project) {
13 project.task("checkLibVersions") {
14 description =
15 "Find any 3rd party libraries which have released new versions to the central Maven repo since we last upgraded."
16 doLast {
17 project.configurations.flatMap { it.allDependencies }
18 .toSet()
19 .forEach { checkDependency(it) }
20 }
21 }
22 }
23
24 private fun Task.checkDependency(dependency: Dependency) {
25 val version = dependency.version
26 val group = dependency.group
27 val path = group?.replace(".", "/") ?: ""
28 val name = dependency.name
29 val metaDataUrl = "https://repo1.maven.org/maven2/$path/$name/maven-metadata.xml"
30 try {
31 val url = ResourceGroovyMethods.toURL(metaDataUrl)
32 val metaDataText = ResourceGroovyMethods.getText(url)
33 val metadata = XmlSlurper().parseText(metaDataText)
34 val newest = (metadata.getProperty("versioning") as GPathResult).getProperty("latest")
35 if (version != newest.toString()) {
36 println("UPGRADE {\"group\": \"$group\", \"name\": \"$name\", \"current\": \"$version\", \"latest\": \"$newest\"}")
37 }
38 } catch (e: Throwable) {
39 logger.debug("Unable to download or parse {}: {}", metaDataUrl, e.message)
40 }
41 }
42 }