@@ -127,6 +127,12 @@ tasks.register(Tasks.PRINT_DEV_SNAPSHOT_RELEASE_NOTE_TASK_NAME) {
127127 dependsOn(tasks.getByName(" devSnapshot" ))
128128}
129129
130+ tasks.register(Tasks .PRINT_SUMMARY_SANITIZED_TASK_NAME ) {
131+ doLast {
132+ printSanitizedVersion(project.sanitizeVersion())
133+ }
134+ }
135+
130136detekt {
131137 allRules = false
132138 basePath = " $projectDir "
@@ -210,15 +216,16 @@ nexusPublishing {
210216// <major>.<minor>.<patch>-dev.#+<branchname>.<hash> (local branch)
211217// <major>.<minor>.<patch>-dev.#+<hash> (github pull request)
212218// to:
213- // <major>.<minor>.<patch>-dev+<branchname>-SNAPSHOT
219+ // <major>.<minor>.<patch>-dev+<branchname>_<hash> -SNAPSHOT
214220fun Project.sanitizeVersion (): String {
215221 val version = version.toString()
216222 return if (project.isSnapshotVersion()) {
217223 val githubHeadRef = settingsProvider.githubHeadRef
224+ val githubHeadSHA = settingsProvider.githubHeadSHA?.take(Consts .MAX_HEAD_SHA_LENGTH )
218225 if (githubHeadRef != null ) {
219226 // github pull request
220227 version
221- .replace(Regex (" -dev\\ .\\ d+\\ +[a-f0-9]+$" ), " -dev+$githubHeadRef -SNAPSHOT" )
228+ .replace(Regex (" -dev\\ .\\ d+\\ +[a-f0-9]+$" ), " -dev+${ githubHeadRef} _ $githubHeadSHA -SNAPSHOT" )
222229 } else {
223230 // local branch
224231 version
@@ -273,6 +280,16 @@ fun printDevSnapshotReleaseNote(groupId: String, artifactId: String, sanitizedVe
273280 println ()
274281}
275282
283+ fun printSanitizedVersion (sanitizedVersion : String ) {
284+ val markdownMessage = """
285+ |## Sanitized Version
286+ |
287+ |**Version:** $sanitizedVersion
288+ |
289+ """ .trimMargin()
290+ File (" sanitized_version.md" ).writeText(markdownMessage)
291+ }
292+
276293class SettingsProvider {
277294
278295 val gpgSigningKey: String?
@@ -290,6 +307,9 @@ class SettingsProvider {
290307 val githubHeadRef: String?
291308 get() = System .getenv(GITHUB_HEAD_REF_PROPERTY )
292309
310+ val githubHeadSHA: String?
311+ get() = System .getenv(GITHUB_HEAD_SHA_PROPERTY )
312+
293313 fun validateGPGSecrets () = require(
294314 value = ! gpgSigningKey.isNullOrBlank() && ! gpgSigningPassword.isNullOrBlank(),
295315 lazyMessage = {
@@ -310,6 +330,7 @@ class SettingsProvider {
310330 private const val OSSRH_USERNAME_PROPERTY = " OSSRH_USERNAME"
311331 private const val OSSRH_PASSWORD_PROPERTY = " OSSRH_PASSWORD"
312332 private const val GITHUB_HEAD_REF_PROPERTY = " GITHUB_HEAD_REF"
333+ private const val GITHUB_HEAD_SHA_PROPERTY = " GITHUB_HEAD_SHA"
313334 }
314335}
315336
@@ -339,9 +360,11 @@ object PublicationSettings {
339360object Consts {
340361 const val SLOW_TESTS_LOGGING_THRESHOLD_MS = 30_000L
341362 const val MAX_TEST_RETRIES_COUNT = 3
363+ const val MAX_HEAD_SHA_LENGTH = 8
342364}
343365
344366object Tasks {
345367 const val PRINT_FINAL_RELEASE_NOTE_TASK_NAME = " printFinalReleaseNote"
346368 const val PRINT_DEV_SNAPSHOT_RELEASE_NOTE_TASK_NAME = " printDevSnapshotReleaseNote"
369+ const val PRINT_SUMMARY_SANITIZED_TASK_NAME = " printDevSanitizedVersion"
347370}
0 commit comments