Added version extension properties.

This commit is contained in:
Erik C. Thauvin 2019-07-25 01:51:04 -07:00
parent 17b5ceaaf6
commit e1891c47af
5 changed files with 78 additions and 10 deletions

View file

@ -32,7 +32,11 @@
package net.thauvin.erik.gradle.semver
open class SemverConfig {
import javax.inject.Inject
open class SemverConfig @Inject constructor(
private val semVersion: Version
) {
companion object {
const val DEFAULT_KEYS_PREFIX = "version."
const val DEFAULT_PROPERTIES = "${DEFAULT_KEYS_PREFIX}properties"
@ -48,6 +52,8 @@ open class SemverConfig {
}
var properties = DEFAULT_PROPERTIES
// Keys
var semverKey = DEFAULT_SEMVER_KEY
get() = "$keysPrefix$field"
var majorKey = DEFAULT_MAJOR_KEY
@ -68,10 +74,32 @@ open class SemverConfig {
get() = "$keysPrefix$field"
var keysPrefix = DEFAULT_KEYS_PREFIX
// Properties
val semver: String
get() = semVersion.semver
val version: String
get() = semVersion.semver
val major: Int
get() = semVersion.major
val minor: Int
get() = semVersion.minor
val patch: Int
get() = semVersion.patch
val preRelease: String
get() = semVersion.preRelease
val buildMeta: String
get() = semVersion.buildMeta
val preReleasePrefix: String
get() = semVersion.preReleasePrefix
val buildMetaPrefix: String
get() = semVersion.buildMetaPrefix
val separator: String
get() = semVersion.separator
override fun toString(): String {
return "SemverConfig(" +
"properties='$properties', " +
"semver='$semverKey', " +
"semverKey='$semverKey', " +
"majorKey='$majorKey', " +
"minorKey='$minorKey', " +
"patchKey='$patchKey', " +
@ -80,7 +108,16 @@ open class SemverConfig {
"buildMetaKey='$buildMetaKey', " +
"buildMetaPrefixKey='$buildMetaPrefixKey', " +
"separator='$separatorKey', " +
"keysPrefix='$keysPrefix')" +
"keysPrefix='$keysPrefix', " +
"semver='$semver', " +
"major='$major', " +
"minor='$minor', " +
"patch='$patch', " +
"preRelease='$preRelease', " +
"buildMeta='$buildMeta', " +
"preReleasePrefix='$preReleasePrefix', " +
"buildMetaPrefix='$buildMetaPrefix', " +
"separator='$separator'" +
')'
}
}

View file

@ -54,7 +54,8 @@ open class SemverIncrementTask @Inject constructor(
version.increment(
isMajor = type == SemverConfig.DEFAULT_MAJOR_KEY,
isMinor = type == SemverConfig.DEFAULT_MINOR_KEY,
isPatch = type == SemverConfig.DEFAULT_PATCH_KEY)
isPatch = type == SemverConfig.DEFAULT_PATCH_KEY
)
project.version = version.semver
logger.lifecycle("Version: ${project.version}")
Utils.saveProperties(project.projectDir, config, version)

View file

@ -46,7 +46,7 @@ class SemverPlugin : Plugin<Project> {
if (GradleVersion.current() < GradleVersion.version("4.8.1")) {
throw GradleException("The $simpleName plugin requires Gradle version 4.8.1 or greater.")
}
config = project.extensions.create("semver", SemverConfig::class.java)
config = project.extensions.create("semver", SemverConfig::class.java, version)
project.afterEvaluate(this::afterEvaluate)
project.tasks.apply {
@ -62,18 +62,22 @@ class SemverPlugin : Plugin<Project> {
if (project.version != "unspecified") {
project.logger.warn(
"Please specify the version in ${propsFile.name} and remove it from ${project.buildFile.name}")
"Please specify the version in ${propsFile.name} and remove it from ${project.buildFile.name}"
)
}
propsFile.apply {
val isNew = !exists()
project.logger.info(
"[$simpleName] Attempting to read properties from: `$absoluteFile`. [exists: $isNew, isFile: $isFile, canRead: ${propsFile.canRead()}]")
"[$simpleName] Attempting to read properties from: `$absoluteFile`. [exists: $isNew, isFile: $isFile, canRead: ${canRead()}]"
)
val props = Utils.loadProperties(this)
val requiredProps = setOf(config.semverKey, config.majorKey, config.minorKey, config.patchKey,
config.preReleaseKey, config.buildMetaKey)
val requiredProps = setOf(
config.semverKey, config.majorKey, config.minorKey, config.patchKey,
config.preReleaseKey, config.buildMetaKey
)
val hasReqProps = !isNew && props.stringPropertyNames().containsAll(requiredProps) &&
Utils.isNotSystemProperty(requiredProps)

View file

@ -41,7 +41,7 @@ import kotlin.test.assertTrue
object SemverConfigSpec : Spek({
Feature("SemverConfig") {
Scenario("Testing configs") {
val config by memoized { SemverConfig() }
val config by memoized { SemverConfig(Version()) }
val vars = listOf(
config.semverKey,
config.majorKey,