From 5b661bfef4951ec72fcb6ed0f15821f088a73e84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernd=20Pr=C3=BCnster?= Date: Tue, 17 Sep 2024 14:29:31 +0200 Subject: [PATCH] 20240917 --- CHANGELOG.md | 9 +++- README.md | 4 +- gradle.properties | 2 +- k2/build.gradle.kts | 2 +- k2/src/main/resources/k2versions.properties | 6 ++- legacy/build.gradle.kts | 4 ++ .../main/kotlin/at/asitplus/gradle/Plugin.kt | 49 ++++++++++++++----- 7 files changed, 56 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 974ef61..2b51337 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,11 @@ -# Dual-Version Kotlin 1.9.10 / 2.0.0 +# Dual-Version Kotlin 1.9.10 / 2.0.20 + +## 20240917 +* Coroutines 1.9.0 +* Kotest plugin 6.0.0-20240905.065253-61 +* Kotest dependencies 5.9.1 +* Fix SNAPSHOT publishing +* Print out build date in plugin info ## 20240905 * Pin Kotest Snapshot version to 6.0.0-20240905.065253-61 diff --git a/README.md b/README.md index 314a028..063e9dc 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # A-SIT Plus Gradle Conventions Plugin -[![Version](https://img.shields.io/badge/Kotlin_1.9.10-+20240905-gray.svg?style=flat&logo=kotlin&labelColor=blue&logoColor=white)](CHANGELOG.md) -[![Version](https://img.shields.io/badge/Kotlin_2.0.20-+20240905-gray.svg?style=flat&logo=kotlin&labelColor=7463ce&logoColor=white)](CHANGELOG.md) +[![Version](https://img.shields.io/badge/Kotlin_2.0.20-+20240917-gray.svg?style=flat&logo=kotlin&labelColor=7463ce&logoColor=white)](CHANGELOG.md) +[![Version](https://img.shields.io/badge/Kotlin_1.9.10-+20240917-gray.svg?style=flat&logo=kotlin&labelColor=blue&logoColor=white)](CHANGELOG.md) [![GitHub license](https://img.shields.io/badge/license-Apache%20License%202.0-brightgreen.svg?style=flat&)](http://www.apache.org/licenses/LICENSE-2.0) **Note: This plugin is used internally at A-SIT Plus and there are no guarantees whatsoever wrt. stability, reliability, and even making any sense at all. diff --git a/gradle.properties b/gradle.properties index ff41c98..3f2e2f5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ -buildDate=20240905 +buildDate=20240917 groupId=at.asitplus.gradle diff --git a/k2/build.gradle.kts b/k2/build.gradle.kts index 49dd0cd..822eb1b 100644 --- a/k2/build.gradle.kts +++ b/k2/build.gradle.kts @@ -20,7 +20,7 @@ val buildDate: String by extra val kotlinVersion = versions["kotlin"] as String val ksp = "$kotlinVersion-${versions["ksp"]}" -val kotest = versions["kotest"] +val kotest = versions["kotest-plugin"] version = "$kotlinVersion+$buildDate" group = groupId diff --git a/k2/src/main/resources/k2versions.properties b/k2/src/main/resources/k2versions.properties index 119e82b..bf0fbf5 100644 --- a/k2/src/main/resources/k2versions.properties +++ b/k2/src/main/resources/k2versions.properties @@ -1,4 +1,6 @@ kotlin=2.0.20 ksp=1.0.24 -kotest=6.0.0-20240905.065253-61 -serialization=1.7.2 \ No newline at end of file +kotest=5.9.1 +kotest-plugin=6.0.0-20240905.065253-61 +serialization=1.7.2 +coroutines=1.9.0 \ No newline at end of file diff --git a/legacy/build.gradle.kts b/legacy/build.gradle.kts index 3dc553a..5e540e0 100644 --- a/legacy/build.gradle.kts +++ b/legacy/build.gradle.kts @@ -16,6 +16,10 @@ private val versions = Properties().apply { val groupId: String by extra val buildDate: String by extra +project.file("src/main/kotlin/BuildDate.kt").bufferedWriter().use { writer -> + writer.write("package at.asitplus.gradle\nval buildDate = \"$buildDate\"") +} + val kotlinVersion = versions["kotlin"] as String val ksp = "$kotlinVersion-${versions["ksp"]}" diff --git a/legacy/src/main/kotlin/at/asitplus/gradle/Plugin.kt b/legacy/src/main/kotlin/at/asitplus/gradle/Plugin.kt index 84b2778..36f2b7c 100644 --- a/legacy/src/main/kotlin/at/asitplus/gradle/Plugin.kt +++ b/legacy/src/main/kotlin/at/asitplus/gradle/Plugin.kt @@ -57,6 +57,12 @@ class EnvExtraDelegate(private val project: Project) { } private val KEY_ASP_VERSIONS = Random.nextBits(32).toString(36) +private val KEY_ASP_STAGING = Random.nextBits(32).toString(36) +var Project.staging: Boolean? + get() = rootProject.extraProperties[KEY_ASP_STAGING] as Boolean? + set(value) { + rootProject.extraProperties[KEY_ASP_STAGING] = value + } val Project.AspVersions: AspVersions get() = rootProject.extraProperties[KEY_ASP_VERSIONS] as AspVersions val Project.env: EnvDelegate get() = EnvDelegate @@ -70,7 +76,6 @@ private inline fun Project.hasMrJar() = plugins.hasPlugin("me.champeau.mrjar") val Project.jvmTarget: String get() = runCatching { extraProperties["jdk.version"] as String }.getOrElse { AspVersions.jvm.defaultTarget } open class AspLegacyConventions : Plugin { - protected open fun KotlinMultiplatformExtension.setupKotest() { sourceSets { val commonTest by getting { @@ -100,13 +105,15 @@ open class AspLegacyConventions : Plugin { override fun apply(target: Project) { Logger = target.logger target.supportLocalProperties() - if (target.rootProject == target) + if (target.rootProject == target) { + target.staging = null AspVersions(target).let { target.extraProperties[KEY_ASP_VERSIONS] = it versionOverrides(it) } + } Logger.lifecycle( - "\n ASP Conventions ${H}${target.AspVersions.versions["kotlin"]}$R is using the following dependency versions for project ${ + "\n ASP Conventions ${H}${target.AspVersions.versions["kotlin"]}+$buildDate$R is using the following dependency versions for project ${ if (target == target.rootProject) target.name else "${target.rootProject.name}:${target.name}" }:" @@ -179,16 +186,6 @@ open class AspLegacyConventions : Plugin { doLast { Logger.lifecycle("> Clean done") } } } - - Logger.info(" Setting Nexus publishing URL to s01.oss.sonatype.org") - target.extensions.getByType().apply { - repositories { - sonatype { - nexusUrl.set(java.net.URI("https://s01.oss.sonatype.org/service/local/")) - snapshotRepositoryUrl.set(java.net.URI("https://s01.oss.sonatype.org/content/repositories/snapshots/")) - } - } - } } var isMultiplatform = false @@ -322,6 +319,32 @@ open class AspLegacyConventions : Plugin { } target.compileVersionCatalog() target.setupSignDependency() + + target.rootProject.extensions.getByType().apply { + val isSnapshot = target.version.toString().endsWith("-SNAPSHOT") + if (staging == null) { + staging = isSnapshot + useStaging.set(false) + repositories.sonatype { + val releaseUrl = if (isSnapshot) "https://s01.oss.sonatype.org/content/repositories/snapshots/" + else "https://s01.oss.sonatype.org/service/local/" + if(isSnapshot) + Logger.lifecycle(" Working around Nexus Plugin SNAPSHOT workaround by setting Nexus publishing URL to $releaseUrl") + else + Logger.lifecycle(" Setting Nexus publishing URL to $releaseUrl") + nexusUrl.set( + java.net.URI( + releaseUrl + ) + ) + snapshotRepositoryUrl.set(java.net.URI("https://s01.oss.sonatype.org/content/repositories/snapshots/")) + } + } else if (staging != isSnapshot) + Logger.warn("\n Publishing will not work, as some modules use snapshot versions, while others don't. Choose either for all!") + Logger.lifecycle("\n Project version for publishing: ${target.version}") + Logger.lifecycle(" Artefact ${target.name} will be published to ${if (useStaging.get()) "SNAPSHOT" else "release"} repository") + } + } } }.getOrElse {