diff options
Diffstat (limited to 'build-logic')
-rw-r--r-- | build-logic/build.gradle.kts | 5 | ||||
-rw-r--r-- | build-logic/src/main/kotlin/app/passwordstore/gradle/DependencyUpdatesPlugin.kt | 34 |
2 files changed, 39 insertions, 0 deletions
diff --git a/build-logic/build.gradle.kts b/build-logic/build.gradle.kts index 877d6752..4917fc8c 100644 --- a/build-logic/build.gradle.kts +++ b/build-logic/build.gradle.kts @@ -65,6 +65,10 @@ gradlePlugin { id = "com.github.android-password-store.versioning-plugin" implementationClass = "app.passwordstore.gradle.versioning.VersioningPlugin" } + register("versions") { + id = "com.github.android-password-store.versions" + implementationClass = "app.passwordstore.gradle.DependencyUpdatesPlugin" + } } } @@ -84,6 +88,7 @@ dependencies { implementation(libs.build.r8) implementation(libs.build.semver) implementation(libs.build.sentry) + implementation(libs.build.vcu) implementation(libs.kotlinx.coroutines.core) // Expose the generated version catalog API to the plugin. diff --git a/build-logic/src/main/kotlin/app/passwordstore/gradle/DependencyUpdatesPlugin.kt b/build-logic/src/main/kotlin/app/passwordstore/gradle/DependencyUpdatesPlugin.kt new file mode 100644 index 00000000..cac23ee2 --- /dev/null +++ b/build-logic/src/main/kotlin/app/passwordstore/gradle/DependencyUpdatesPlugin.kt @@ -0,0 +1,34 @@ +/* + * Copyright © 2014-2021 The Android Password Store Authors. All Rights Reserved. + * SPDX-License-Identifier: GPL-3.0-only + */ +package app.passwordstore.gradle + +import com.github.zafarkhaja.semver.Version +import kotlin.jvm.optionals.getOrNull +import nl.littlerobots.vcu.plugin.VersionCatalogUpdateExtension +import nl.littlerobots.vcu.plugin.VersionCatalogUpdatePlugin +import nl.littlerobots.vcu.plugin.versionSelector +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.apply +import org.gradle.kotlin.dsl.configure + +@Suppress("Unused") +class DependencyUpdatesPlugin : Plugin<Project> { + override fun apply(project: Project) { + project.pluginManager.apply(VersionCatalogUpdatePlugin::class) + project.extensions.configure<VersionCatalogUpdateExtension> { + keep.keepUnusedLibraries.set(true) + versionSelector { + val currentVersion = Version.tryParse(it.currentVersion).getOrNull() + val newVersion = Version.tryParse(it.candidate.version).getOrNull() + if (currentVersion == null || newVersion == null) { + false + } else { + newVersion.isHigherThan(currentVersion) + } + } + } + } +} |