From: AsamK Date: Sat, 23 Jan 2021 16:59:50 +0000 (+0100) Subject: Extract checkLibVersions task to gradle plugin X-Git-Tag: v0.8.0~11 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/4eaec8359423df351a2c978095419e65e8dbac49?ds=inline Extract checkLibVersions task to gradle plugin --- diff --git a/build.gradle.kts b/build.gradle.kts index 8a3a8aae..052e3c22 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -2,6 +2,7 @@ plugins { java application eclipse + `check-lib-versions` } version = "0.7.4" @@ -57,39 +58,6 @@ tasks.withType { } } -// 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() - 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 index 00000000..1d88ae7d --- /dev/null +++ b/buildSrc/build.gradle.kts @@ -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 index 00000000..701bd6e3 --- /dev/null +++ b/buildSrc/src/main/kotlin/CheckLibVersionsPlugin.kt @@ -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 { + 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") + } + } +} diff --git a/lib/build.gradle.kts b/lib/build.gradle.kts index 5eb6c9b4..c5d46c4f 100644 --- a/lib/build.gradle.kts +++ b/lib/build.gradle.kts @@ -1,5 +1,6 @@ plugins { `java-library` + `check-lib-versions` } java {