Versioning for program modules added
This commit is contained in:
1 parent
a1a6038219
commit
238ef0a162
6 files changed
+117
-19
No files matched your search
@@ -5,10 +5,12 @@ import io.github.z4kn4fein.semver.withoutSuffixes
|
||||
import org.gradle.api.DefaultTask
|
||||
import org.gradle.api.file.ConfigurableFileCollection
|
||||
import org.gradle.api.file.RegularFileProperty
|
||||
import org.gradle.api.provider.MapProperty
|
||||
import org.gradle.api.provider.Property
|
||||
import org.gradle.api.tasks.*
|
||||
import java.util.*
|
||||
|
||||
@CacheableTask
|
||||
abstract class AddVersionTask : DefaultTask() {
|
||||
|
||||
// 1. Define what triggers the task (Source Files)
|
||||
@@ -41,6 +43,9 @@ abstract class AddVersionTask : DefaultTask() {
|
||||
@get:Input
|
||||
abstract val versionPackageName: Property<String>
|
||||
|
||||
@get:Input
|
||||
abstract val modules: MapProperty<String, Map<String, String>>
|
||||
|
||||
@TaskAction
|
||||
fun execute() {
|
||||
val buildNumber = incrementAndGetBuildNumber()
|
||||
@@ -48,17 +53,61 @@ abstract class AddVersionTask : DefaultTask() {
|
||||
}
|
||||
|
||||
private fun writeClassFile(buildNumber: String) {
|
||||
val ver = getVersionInfo(buildNumber)
|
||||
|
||||
val file = versionClassFile.get().asFile
|
||||
file.parentFile.mkdirs()
|
||||
file.writeText(
|
||||
var fileContent =
|
||||
"""
|
||||
package ${versionPackageName.get()}
|
||||
|
||||
import net.keinekekse.version.Version
|
||||
|
||||
object VERSION: Version {
|
||||
""".trimIndent() +
|
||||
buildVersionObject(
|
||||
"",
|
||||
projectVersion.get(),
|
||||
buildNumber,
|
||||
displayNameExtra.get(),
|
||||
copyrightExtra.get(),
|
||||
projectName.get(),
|
||||
projectDescription.get()
|
||||
)
|
||||
if (modules.isPresent) {
|
||||
modules.get().forEach { (moduleName, moduleInfo) ->
|
||||
fileContent +=
|
||||
buildVersionObject(
|
||||
moduleName,
|
||||
moduleInfo["version"] ?: "",
|
||||
buildNumber,
|
||||
moduleInfo["displayName"] ?: moduleName,
|
||||
moduleInfo["copyright"] ?: copyrightExtra.get(),
|
||||
moduleName,
|
||||
moduleInfo["description"] ?: ""
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
val file = versionClassFile.get().asFile
|
||||
file.parentFile.mkdirs()
|
||||
file.writeText(fileContent)
|
||||
}
|
||||
|
||||
private fun buildVersionObject(
|
||||
moduleName: String,
|
||||
versionString: String,
|
||||
buildNumber: String,
|
||||
longName: String,
|
||||
copy: String,
|
||||
shortName: String,
|
||||
desc: String,
|
||||
): String {
|
||||
val ver = getVersionInfo(versionString, buildNumber, longName, copy, shortName, desc)
|
||||
val module = if (moduleName.isBlank()) {
|
||||
""
|
||||
} else {
|
||||
"_$moduleName"
|
||||
}
|
||||
|
||||
return """
|
||||
|
||||
object VERSION$module: Version {
|
||||
override val version = "${ver.version}"
|
||||
override val fullVersion = "${ver.fullVersion}"
|
||||
override val major = ${ver.major}
|
||||
@@ -73,15 +122,21 @@ abstract class AddVersionTask : DefaultTask() {
|
||||
override val description = "${ver.description}"
|
||||
}
|
||||
""".trimIndent()
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
private fun getVersionInfo(buildNumber: String): VersionInfo {
|
||||
private fun getVersionInfo(
|
||||
versionString: String,
|
||||
buildNumber: String,
|
||||
longName: String,
|
||||
copy: String,
|
||||
shortName: String,
|
||||
desc: String,
|
||||
): VersionInfo {
|
||||
val version =
|
||||
if (Version.parse(projectVersion.get(), strict = false).buildMetadata.isNullOrEmpty())
|
||||
Version.parse(projectVersion.get() + "+build.$buildNumber", strict = false)
|
||||
else Version.parse(projectVersion.get(), strict = false)
|
||||
if (Version.parse(versionString, strict = false).buildMetadata.isNullOrEmpty())
|
||||
Version.parse("$versionString+build.$buildNumber", strict = false)
|
||||
else Version.parse(versionString, strict = false)
|
||||
|
||||
println("Source files changed. Setting version to $version")
|
||||
|
||||
@@ -92,13 +147,14 @@ abstract class AddVersionTask : DefaultTask() {
|
||||
preRelease = version.preRelease ?: "",
|
||||
buildMetadata = version.buildMetadata ?: "",
|
||||
fullVersion = version.toString(),
|
||||
version = if (version.isPreRelease) version.toString() else
|
||||
version = if (version.isPreRelease)
|
||||
"${version.major}.${version.minor}.${version.patch}-${version.preRelease}" else
|
||||
version.withoutSuffixes().toString(),
|
||||
buildDate = java.time.Instant.now().toString(),
|
||||
displayName = displayNameExtra.get(),
|
||||
copyright = copyrightExtra.get(),
|
||||
name = projectName.get(),
|
||||
description = projectDescription.get() ?: ""
|
||||
displayName = longName,
|
||||
copyright = copy,
|
||||
name = shortName,
|
||||
description = desc
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user