Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,13 @@ About

This is a set of Gradle plugins to simplify release tasks

Gradle version compatibilty
===========================

* 3.x requires Gradle 7.2, Kotlin 1.5, Java 8
* 2.x requires Gradle 4.1, Kotlin 1.4, Java 8
* 1.x requires Gradle 4.1, Kotlin 1.4, Java 8

Checksum Dependency Plugin
==========================

Expand Down
8 changes: 7 additions & 1 deletion buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import org.gradle.kotlin.dsl.support.expectedKotlinDslPluginsVersion
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile

/*
Expand Down Expand Up @@ -62,8 +63,13 @@ fun Project.applyKotlinProjectConventions() {
tasks.withType<JavaCompile>().configureEach {
options.release.set(11)
}
tasks.withType<KotlinJvmCompile>().configureEach {
kotlin {
@Suppress("DEPRECATION")
val targetKotlinVersion = KotlinVersion.KOTLIN_1_5

compilerOptions {
apiVersion.set(targetKotlinVersion)
languageVersion.set(targetKotlinVersion)
jvmTarget = JvmTarget.JVM_11
freeCompilerArgs.add("-Xjdk-release=11")
}
Expand Down
13 changes: 8 additions & 5 deletions buildSrc/src/main/kotlin/build.kotlin-conventions.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -17,20 +17,23 @@

import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile

plugins {
id("build.java-conventions")
id("com.github.autostyle")
kotlin("jvm")
}

tasks.withType<KotlinJvmCompile>().configureEach {
kotlin {
@Suppress("DEPRECATION")
val targetKotlinVersion = KotlinVersion.KOTLIN_1_5

coreLibrariesVersion = "1.5.31"
compilerOptions {
freeCompilerArgs.add("-Xjdk-release=8")
@Suppress("DEPRECATION")
apiVersion.set(KotlinVersion.KOTLIN_1_4)
jvmTarget = JvmTarget.JVM_1_8
freeCompilerArgs.add("-Xjdk-release=8")
apiVersion.set(targetKotlinVersion)
languageVersion.set(targetKotlinVersion)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ abstract class BaseGettextEditTask @Inject constructor(
searchBytes.withIndex().all { (j, v) -> v == potBytes[i + j] }
} ?: return
val headerEnd =
(headerStart..potBytes.size).find { potBytes[it] == '"'.toByte() } ?: return
(headerStart..potBytes.size).find { potBytes[it] == '"'.code.toByte() } ?: return

outputStream().use {
it.write(potBytes, 0, headerStart)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,16 @@ import org.gradle.api.publish.PublishingExtension
import org.gradle.api.publish.maven.MavenPublication
import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.named
import java.util.Locale

fun Project.extraMavenPublications() = extraMavenPublications("Maven", name)

fun Project.extraMavenPublications(configurationName: String, publicationName: String) {
val configuration = configurations.create("extra${configurationName.capitalize()}Publications") {
val configuration = configurations.create("extra${
configurationName.replaceFirstChar {
if (it.isLowerCase()) it.titlecase(Locale.ENGLISH) else it.toString()
}
}Publications") {
isVisible = false
isCanBeResolved = false
isCanBeConsumed = false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ class TfIdfBuilder<Document> {
.associateTo(mutableMapOf()) { (index, term) ->
index to termCount.getValue(term) * idf.getValue(term)
}
val k = 1 / sqrt(terms.values.sumByDouble { it * it })
val k = 1 / sqrt(terms.values.sumOf { it * it })
terms.replaceAll { _, value -> value * k }
docVec[document] = terms
}
Expand Down Expand Up @@ -236,7 +236,7 @@ class Tokenizer {
fun getTokens(input: String): List<Term> {
val text = input
.replace(SPDX_TAG, " ")
.toLowerCase()
.lowercase()
.replace(COPYRIGHT, "copyright ")

val words = WHITESPACE.split(text)
Expand Down Expand Up @@ -276,7 +276,7 @@ class Predictor<Document>(
)
}

val norm = 1 / sqrt(testVec.values.sumByDouble { it * it })
val norm = 1 / sqrt(testVec.values.sumOf { it * it })
testVec.replaceAll { _, value -> value * norm }

return docVec.mapValues { (_, docTerms) -> cross(testVec, docTerms) }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ class LicenseExpressionParser(private val titleParser: LicenseParser = DefaultLi
.map {
Token(
position = it.range, value = it.value,
type = when (it.value.toUpperCase()) {
type = when (it.value.uppercase()) {
"(" -> TokenType.LBRACE
")" -> TokenType.RBRACE
"+" -> TokenType.PLUS
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import org.gradle.api.tasks.TaskProvider
import org.gradle.api.tasks.bundling.AbstractArchiveTask
import org.gradle.kotlin.dsl.*
import java.time.Duration
import java.util.Locale

/**
* Setting up local release environment:
Expand Down Expand Up @@ -296,7 +297,7 @@ open class GitConfig @Inject constructor(
val pushRepositoryProvider = objects.property<GitPushRepositoryProvider>()
.convention(ext.prefixForProperties.map { prefix ->
project.stringProperty("$prefix.git.pushRepositoryProvider")
?.let { GitPushRepositoryProvider.valueOf(it.toUpperCase()) }
?.let { GitPushRepositoryProvider.valueOf(it.uppercase()) }
?: GitPushRepositoryProvider.GITHUB
})

Expand All @@ -313,7 +314,9 @@ open class GitConfig @Inject constructor(

val branch = objects.property<String>()

val credentials = objects.newInstance<Credentials>("Git" + name.capitalize(), ext)
val credentials = objects.newInstance<Credentials>("Git" + name.replaceFirstChar {
if (it.isLowerCase()) it.titlecase(Locale.ENGLISH) else it.toString()
}, ext)

override fun toString() = "${urls.get().pushUrl}, branch: ${branch.get()}"
}
Expand Down Expand Up @@ -349,7 +352,7 @@ open class Credentials @Inject constructor(
private val kebabDelimeters = Regex("""(\p{Lower})\s*(\p{Upper})""")
private fun String.toKebabCase() =
replace(kebabDelimeters) { "${it.groupValues[1]}-${it.groupValues[2]}" }
.toLowerCase()
.lowercase()

class ReleaseArtifact(
val name: String,
Expand All @@ -375,7 +378,7 @@ class ReleaseParams(
get() = gitSha.subSequence(0, 10)

val tlpUrl
get() = tlp.toLowerCase()
get() = tlp.lowercase()
}

internal fun Project.validate(credentials: () -> Credentials) = listOf(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ import java.io.File
import java.net.URI
import java.nio.charset.StandardCharsets
import java.time.Duration
import java.util.Locale
import javax.inject.Inject

class StageVoteReleasePlugin @Inject constructor(
Expand Down Expand Up @@ -155,8 +156,16 @@ class StageVoteReleasePlugin @Inject constructor(
hideMavenPublishTasks()

// Tasks from NexusStagingPlugin
val closeRepository = tasks.named("close${REPOSITORY_NAME.capitalize()}StagingRepository")
val releaseRepository = tasks.named("release${REPOSITORY_NAME.capitalize()}StagingRepository")
val closeRepository = tasks.named("close${
REPOSITORY_NAME.replaceFirstChar {
if (it.isLowerCase()) it.titlecase(Locale.ENGLISH) else it.toString()
}
}StagingRepository")
val releaseRepository = tasks.named("release${
REPOSITORY_NAME.replaceFirstChar {
if (it.isLowerCase()) it.titlecase(Locale.ENGLISH) else it.toString()
}
}StagingRepository")

val pushRcTag = createPushRcTag(releaseExt, validateRcIndexSpecified, validateBeforeBuildingReleaseArtifacts, closeRepository)
val pushReleaseTag = createPushReleaseTag(releaseExt, validateRcIndexSpecified, releaseRepository)
Expand Down Expand Up @@ -204,7 +213,11 @@ class StageVoteReleasePlugin @Inject constructor(
}
closeRepository.hide()
releaseRepository.hide()
tasks.named("closeAndRelease${REPOSITORY_NAME.capitalize()}StagingRepository").hide()
tasks.named("closeAndRelease${
REPOSITORY_NAME.replaceFirstChar {
if (it.isLowerCase()) it.titlecase(Locale.ENGLISH) else it.toString()
}
}StagingRepository").hide()

releaseRepository {
// Note: publishSvnDist might fail, and it is easier to rollback than "rollback Nexus"
Expand All @@ -231,7 +244,11 @@ class StageVoteReleasePlugin @Inject constructor(
allprojects {
plugins.withType<MavenPublishPlugin> {
stageDist {
dependsOn(tasks.named("publishAllPublicationsTo${REPOSITORY_NAME.capitalize()}Repository"))
dependsOn(tasks.named("publishAllPublicationsTo${
REPOSITORY_NAME.replaceFirstChar {
if (it.isLowerCase()) it.titlecase(Locale.ENGLISH) else it.toString()
}
}Repository"))
}
}
}
Expand Down Expand Up @@ -400,7 +417,11 @@ class StageVoteReleasePlugin @Inject constructor(
tasks.withType<PublishToMavenRepository>().hide()
tasks.withType<PublishToMavenLocal>().hide()
tasks.withType<GenerateModuleMetadata>().hide()
tasks.named("publishAllPublicationsTo${REPOSITORY_NAME.capitalize()}Repository").hide()
tasks.named("publishAllPublicationsTo${
REPOSITORY_NAME.replaceFirstChar {
if (it.isLowerCase()) it.titlecase(Locale.ENGLISH) else it.toString()
}
}Repository").hide()
val generatePomTasks = tasks.withType<GenerateMavenPom>()
generatePomTasks.hide()
tasks.register("generatePom") {
Expand Down Expand Up @@ -577,16 +598,28 @@ class StageVoteReleasePlugin @Inject constructor(
}
})

tasks.named<ReleaseNexusStagingRepository>("release${REPOSITORY_NAME.capitalize()}StagingRepository") {
tasks.named<ReleaseNexusStagingRepository>("release${
REPOSITORY_NAME.replaceFirstChar {
if (it.isLowerCase()) it.titlecase(Locale.ENGLISH) else it.toString()
}
}StagingRepository") {
stagingRepositoryId.set(project.provider { releaseExt.repositoryIdStore.getOrLoad(REPOSITORY_NAME) })
}
tasks.named<InitializeNexusStagingRepository>("initialize${repo.name.capitalize()}StagingRepository") {
tasks.named<InitializeNexusStagingRepository>("initialize${
repo.name.replaceFirstChar {
if (it.isLowerCase()) it.titlecase(Locale.ENGLISH) else it.toString()
}
}StagingRepository") {
dependsOn(validateBeforeBuildingReleaseArtifacts)
dependsOn(validateNexusCredentials)
doLast {
val repoName = repository.get().name
val closeRepoTask =
rootProject.tasks.named<CloseNexusStagingRepository>("close${repoName.capitalize()}StagingRepository")
rootProject.tasks.named<CloseNexusStagingRepository>("close${
repoName.replaceFirstChar {
if (it.isLowerCase()) it.titlecase(Locale.ENGLISH) else it.toString()
}
}StagingRepository")
val stagingRepositoryId =
closeRepoTask.get().stagingRepositoryId.get()
releaseExt.repositoryIdStore[repoName] = stagingRepositoryId
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ import java.io.ByteArrayOutputStream
import java.net.URI
import java.time.OffsetDateTime
import org.gradle.api.GradleException
import org.gradle.api.Project
import org.gradle.api.logging.Logger
import org.gradle.process.ExecOperations
import java.io.File
Expand All @@ -46,7 +45,7 @@ class Svn(val execOperations: ExecOperations, val logger: Logger, val projectDir
// </entry>
// ...
private fun GPathResult.toSvnEntry(path: String) = SvnEntry(
kind = attr("kind").let { EntryKind.valueOf(it.toUpperCase()) },
kind = attr("kind").let { EntryKind.valueOf(it.uppercase()) },
path = path,
name = get("name").text(),
size = get("size").text().ifBlank { null }?.toLong(),
Expand Down Expand Up @@ -106,7 +105,7 @@ class Svn(val execOperations: ExecOperations, val logger: Logger, val projectDir
val stderr = ByteArrayOutputStream()
val result = execOperations.exec {
workingDir = projectDir
commandLine("svn", "ls", "--xml", "--depth", opts.depth.name.toLowerCase())
commandLine("svn", "ls", "--xml", "--depth", opts.depth.name.lowercase())
for (folder in opts.folders) {
args("$uri/$folder/")
}
Expand Down
11 changes: 1 addition & 10 deletions testkit/src/main/kotlin/com/github/vlsi/gradle/BaseGradleTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -57,18 +57,9 @@ open class BaseGradleTest {
return listOf(arguments(TestCase(GradleVersion.version("8.10.2"), ConfigurationCache.ON)))
}
return mutableListOf<Arguments>().apply {
if (JavaVersion.current() <= JavaVersion.VERSION_1_8) {
add(arguments(TestCase(GradleVersion.version("4.1"), ConfigurationCache.OFF)))
add(arguments(TestCase(GradleVersion.version("4.4.1"), ConfigurationCache.OFF)))
add(arguments(TestCase(GradleVersion.version("4.10.2"), ConfigurationCache.OFF)))
}
// Java 11 requires Gradle 5.0+
if (JavaVersion.current() <= JavaVersion.VERSION_11) {
add(arguments(TestCase(GradleVersion.version("5.6.2"), ConfigurationCache.OFF)))
add(arguments(TestCase(GradleVersion.version("5.4.1"), ConfigurationCache.OFF)))
add(arguments(TestCase(GradleVersion.version("6.0"), ConfigurationCache.OFF)))
add(arguments(TestCase(GradleVersion.version("6.5"), ConfigurationCache.OFF)))
add(arguments(TestCase(GradleVersion.version("7.0"), ConfigurationCache.OFF)))
add(arguments(TestCase(GradleVersion.version("7.2"), ConfigurationCache.OFF)))
}
// Java 17 requires Gradle 7.3+
if (JavaVersion.current() <= JavaVersion.VERSION_17) {
Expand Down
Loading