diff --git a/README.md b/README.md index 80812ab..f26c6aa 100644 --- a/README.md +++ b/README.md @@ -119,11 +119,14 @@ The `maximumPatchVersion` parameter represents the maximum value allowed for the ### Snapshot The `snapshot` parameter represents whether the version should have the `-SNAPSHOT` classifier or not. By default, all the versions are considered as snapshots, so all the local builds don't interfere with the release builds. +### Alpha +The `alpha` parameter represents whether the version should have the `-ALPHA` classifier or not. + ### Beta The `beta` parameter represents whether the version should have the `-BETA` classifier or not. -### Alpha -The `alpha` parameter represents whether the version should have the `-ALPHA` classifier or not. +### RC +The `rc` parameter represents whether the version should have the `-RC` classifier or not. ### Version Classifier The `versionClassifier` parameter represents the classifier appended to the version. You can use this property to define a custom version classifier. diff --git a/semantic-version-android-gradle-plugin/src/main/java/com/semanticversion/android/gradle/plugin/SemanticVersionAndroidGradlePlugin.kt b/semantic-version-android-gradle-plugin/src/main/java/com/semanticversion/android/gradle/plugin/SemanticVersionAndroidGradlePlugin.kt index 48f6313..1bc149c 100644 --- a/semantic-version-android-gradle-plugin/src/main/java/com/semanticversion/android/gradle/plugin/SemanticVersionAndroidGradlePlugin.kt +++ b/semantic-version-android-gradle-plugin/src/main/java/com/semanticversion/android/gradle/plugin/SemanticVersionAndroidGradlePlugin.kt @@ -31,8 +31,9 @@ open class SemanticVersionAndroidGradlePlugin : SemanticVersionGradlePlugin() { semanticVersionConfig.maximumPatchVersion, semanticVersionConfig.versionClassifier, semanticVersionConfig.snapshot, - semanticVersionConfig.beta, semanticVersionConfig.alpha, + semanticVersionConfig.beta, + semanticVersionConfig.rc, semanticVersionAndroidExtension.versionCodePrefix, semanticVersionAndroidExtension.minSdkVersionAsVersionCodePrefix, semanticVersionAndroidExtension.versionCodeExtraBit, diff --git a/semantic-version-gradle-plugin/src/main/java/com/semanticversion/gradle/plugin/SemanticVersionGradlePlugin.kt b/semantic-version-gradle-plugin/src/main/java/com/semanticversion/gradle/plugin/SemanticVersionGradlePlugin.kt index 455a1dd..848f985 100644 --- a/semantic-version-gradle-plugin/src/main/java/com/semanticversion/gradle/plugin/SemanticVersionGradlePlugin.kt +++ b/semantic-version-gradle-plugin/src/main/java/com/semanticversion/gradle/plugin/SemanticVersionGradlePlugin.kt @@ -40,15 +40,16 @@ open class SemanticVersionGradlePlugin : Plugin { val propertyResolver = project.propertyResolver val snapshot: Boolean? = propertyResolver.getBooleanProp("snapshot") val versionClassifier: String? = propertyResolver.getStringProp("versionClassifier") - val beta: Boolean? = propertyResolver.getBooleanProp("beta") val alpha: Boolean? = propertyResolver.getBooleanProp("alpha") + val beta: Boolean? = propertyResolver.getBooleanProp("beta") + val rc: Boolean? = propertyResolver.getBooleanProp("rc") // The maximum number the MAJOR, MINOR or PATCH version can achieve. If it is not specified, // 99 is used for Android projects and 999 for non Android projects val maximumMajorVersion: Int? = propertyResolver.getIntegerProp("maximumMajorVersion") val maximumMinorVersion: Int? = propertyResolver.getIntegerProp("maximumMinorVersion") val maximumPatchVersion: Int? = propertyResolver.getIntegerProp("maximumPatchVersion") - semanticVersionConfig = SemanticVersionConfig(maximumMajorVersion, maximumMinorVersion, maximumPatchVersion, versionClassifier, snapshot, beta, alpha) + semanticVersionConfig = SemanticVersionConfig(maximumMajorVersion, maximumMinorVersion, maximumPatchVersion, versionClassifier, snapshot, alpha, beta, rc) baseVersion = Version(project.version.toString(), maximumMajorVersion, maximumMinorVersion, maximumPatchVersion).baseVersion val version = Version(baseVersion, semanticVersionConfig) diff --git a/semantic-version-gradle-plugin/src/test/java/com/semanticversion/gradle/plugin/increment/IncrementVersionHelperTest.kt b/semantic-version-gradle-plugin/src/test/java/com/semanticversion/gradle/plugin/increment/IncrementVersionHelperTest.kt index 441035b..e3477b0 100644 --- a/semantic-version-gradle-plugin/src/test/java/com/semanticversion/gradle/plugin/increment/IncrementVersionHelperTest.kt +++ b/semantic-version-gradle-plugin/src/test/java/com/semanticversion/gradle/plugin/increment/IncrementVersionHelperTest.kt @@ -67,6 +67,8 @@ class IncrementVersionHelperTest { null, null, null, + null, + null, FakeGitHelper() ) @@ -86,6 +88,8 @@ class IncrementVersionHelperTest { null, null, null, + null, + null, FakeGitHelper() ) } diff --git a/semantic-version/src/main/java/com/semanticversion/SemanticVersionConfig.kt b/semantic-version/src/main/java/com/semanticversion/SemanticVersionConfig.kt index 849117a..a0e0731 100644 --- a/semantic-version/src/main/java/com/semanticversion/SemanticVersionConfig.kt +++ b/semantic-version/src/main/java/com/semanticversion/SemanticVersionConfig.kt @@ -6,8 +6,9 @@ open class SemanticVersionConfig( var maximumPatchVersion: Int? = null, var versionClassifier: String? = null, var snapshot: Boolean? = null, + var alpha: Boolean? = null, var beta: Boolean? = null, - var alpha: Boolean? = null + var rc: Boolean? = null ) // var featureBranchPrefix: String? = propertyResolver.getStringProp(::featureBranchPrefix.name) diff --git a/semantic-version/src/main/java/com/semanticversion/Version.kt b/semantic-version/src/main/java/com/semanticversion/Version.kt index 0ae87e7..ce329b6 100644 --- a/semantic-version/src/main/java/com/semanticversion/Version.kt +++ b/semantic-version/src/main/java/com/semanticversion/Version.kt @@ -5,8 +5,9 @@ open class Version { companion object { const val VERSION_CLASSIFIER_SEPARATOR = "-" const val SNAPSHOT_CLASSIFIER = "SNAPSHOT" - const val BETA_CLASSIFIER = "BETA" const val ALPHA_CLASSIFIER = "ALPHA" + const val BETA_CLASSIFIER = "BETA" + const val RC_CLASSIFIER = "RC" const val BASE_VERSION_SEPARATOR = "." // const val LOCAL_CLASSIFIER = "LOCAL" // const val VERSION_TIMESTAMP_FORMAT = "YYYYMMddHHmmss" @@ -17,8 +18,9 @@ open class Version { var versionPatch: Int? = null var versionClassifier: String? = null var isSnapshot: Boolean = true - var isBeta: Boolean = false var isAlpha: Boolean = false + var isBeta: Boolean = false + var isRc: Boolean = false // TODO Add support to this // var isVersionTimestampEnabled: Boolean = false @@ -109,32 +111,45 @@ open class Version { // versionClassifier += format(now(), VERSION_TIMESTAMP_FORMAT) // } + if (config.snapshot == true || config.snapshot == null) { + versionClassifier = SNAPSHOT_CLASSIFIER + + isSnapshot = true + isAlpha = false + isBeta = false + isRc = false + } else { + isSnapshot = false + isAlpha = false + isBeta = false + isRc = false + } + if (config.alpha == true) { versionClassifier = ALPHA_CLASSIFIER + isSnapshot = false isAlpha = true isBeta = false + isRc = false + } + + if (config.beta == true) { + versionClassifier = BETA_CLASSIFIER + isSnapshot = false - } else { - if (config.beta == true) { - versionClassifier = BETA_CLASSIFIER - - isAlpha = false - isBeta = true - isSnapshot = false - } else { - if (config.snapshot == true || config.snapshot == null) { - versionClassifier = SNAPSHOT_CLASSIFIER - - isAlpha = false - isBeta = false - isSnapshot = true - } else { - isAlpha = false - isBeta = false - isSnapshot = false - } - } + isAlpha = false + isBeta = true + isRc = false + } + + if (config.rc == true) { + versionClassifier = RC_CLASSIFIER + + isSnapshot = false + isAlpha = false + isBeta = false + isRc = true } } else { parseVersionClassifier(versionClassifier!!) @@ -145,25 +160,35 @@ open class Version { private fun parseVersionClassifier(versionClassifier: String) { when (versionClassifier) { + SNAPSHOT_CLASSIFIER -> { + isSnapshot = true + isBeta = false + isAlpha = false + isRc = false + } ALPHA_CLASSIFIER -> { isSnapshot = false isBeta = false isAlpha = true + isRc = false } BETA_CLASSIFIER -> { isSnapshot = false isBeta = true isAlpha = false + isRc = false } - SNAPSHOT_CLASSIFIER -> { - isSnapshot = true + RC_CLASSIFIER -> { + isSnapshot = false isBeta = false isAlpha = false + isRc = true } else -> { isSnapshot = false isBeta = false isAlpha = false + isRc = false } } } diff --git a/semantic-version/src/main/java/com/semanticversion/android/AndroidSemanticVersionConfig.kt b/semantic-version/src/main/java/com/semanticversion/android/AndroidSemanticVersionConfig.kt index c093376..3e08eb7 100644 --- a/semantic-version/src/main/java/com/semanticversion/android/AndroidSemanticVersionConfig.kt +++ b/semantic-version/src/main/java/com/semanticversion/android/AndroidSemanticVersionConfig.kt @@ -10,8 +10,9 @@ class AndroidSemanticVersionConfig( snapshot: Boolean? = null, beta: Boolean? = null, alpha: Boolean? = null, + rc: Boolean? = null, var versionCodePrefix: Int?, var minSdkVersionAsVersionCodePrefix: Boolean, var versionCodeExtraBit: Int, var minSdkVersion: Int -) : SemanticVersionConfig(maximumMajorVersion, maximumMinorVersion, maximumPatchVersion, versionClassifier, snapshot, beta, alpha) +) : SemanticVersionConfig(maximumMajorVersion, maximumMinorVersion, maximumPatchVersion, versionClassifier, snapshot, alpha, beta, rc) diff --git a/semantic-version/src/test/java/com/semanticversion/VersionTest.kt b/semantic-version/src/test/java/com/semanticversion/VersionTest.kt index da6e49d..0aaa7f0 100644 --- a/semantic-version/src/test/java/com/semanticversion/VersionTest.kt +++ b/semantic-version/src/test/java/com/semanticversion/VersionTest.kt @@ -13,8 +13,9 @@ class VersionTest { Truth.assertThat(version.versionMinor).isEqualTo(2) Truth.assertThat(version.versionPatch).isEqualTo(3) Truth.assertThat(version.isSnapshot).isTrue() - Truth.assertThat(version.isBeta).isFalse() Truth.assertThat(version.isAlpha).isFalse() + Truth.assertThat(version.isBeta).isFalse() + Truth.assertThat(version.isRc).isFalse() // Truth.assertThat(version.isLocal).isFalse() // Truth.assertThat(version.isVersionTimestampEnabled).isFalse() // Truth.assertThat(version.featureName).isNull() @@ -27,8 +28,9 @@ class VersionTest { Truth.assertThat(version.versionMinor).isEqualTo(22) Truth.assertThat(version.versionPatch).isEqualTo(33) Truth.assertThat(version.isSnapshot).isTrue() - Truth.assertThat(version.isBeta).isFalse() Truth.assertThat(version.isAlpha).isFalse() + Truth.assertThat(version.isBeta).isFalse() + Truth.assertThat(version.isRc).isFalse() // Truth.assertThat(version.isLocal).isFalse() // Truth.assertThat(version.isVersionTimestampEnabled).isFalse() // Truth.assertThat(version.featureName).isNull() @@ -45,8 +47,9 @@ class VersionTest { Truth.assertThat(version.versionMinor).isEqualTo(2) Truth.assertThat(version.versionPatch).isEqualTo(3) Truth.assertThat(version.isSnapshot).isTrue() - Truth.assertThat(version.isBeta).isFalse() Truth.assertThat(version.isAlpha).isFalse() + Truth.assertThat(version.isBeta).isFalse() + Truth.assertThat(version.isRc).isFalse() // Truth.assertThat(version.isLocal).isFalse() // Truth.assertThat(version.isVersionTimestampEnabled).isFalse() // Truth.assertThat(version.featureName).isNull() @@ -59,8 +62,9 @@ class VersionTest { Truth.assertThat(version.versionMinor).isEqualTo(22) Truth.assertThat(version.versionPatch).isEqualTo(33) Truth.assertThat(version.isSnapshot).isTrue() - Truth.assertThat(version.isBeta).isFalse() Truth.assertThat(version.isAlpha).isFalse() + Truth.assertThat(version.isBeta).isFalse() + Truth.assertThat(version.isRc).isFalse() // Truth.assertThat(version.isLocal).isFalse() // Truth.assertThat(version.isVersionTimestampEnabled).isFalse() // Truth.assertThat(version.featureName).isNull() @@ -77,8 +81,9 @@ class VersionTest { Truth.assertThat(version.versionMinor).isEqualTo(2) Truth.assertThat(version.versionPatch).isEqualTo(3) Truth.assertThat(version.isSnapshot).isFalse() - Truth.assertThat(version.isBeta).isFalse() Truth.assertThat(version.isAlpha).isTrue() + Truth.assertThat(version.isBeta).isFalse() + Truth.assertThat(version.isRc).isFalse() // Truth.assertThat(version.isLocal).isFalse() // Truth.assertThat(version.isVersionTimestampEnabled).isFalse() // Truth.assertThat(version.featureName).isNull() @@ -95,8 +100,9 @@ class VersionTest { Truth.assertThat(version.versionMinor).isEqualTo(2) Truth.assertThat(version.versionPatch).isEqualTo(3) Truth.assertThat(version.isSnapshot).isFalse() - Truth.assertThat(version.isBeta).isTrue() Truth.assertThat(version.isAlpha).isFalse() + Truth.assertThat(version.isBeta).isTrue() + Truth.assertThat(version.isRc).isFalse() // Truth.assertThat(version.isLocal).isFalse() // Truth.assertThat(version.isVersionTimestampEnabled).isFalse() // Truth.assertThat(version.featureName).isNull() @@ -106,21 +112,41 @@ class VersionTest { } @Test - fun `GIVEN a valid alpha, beta & snapshot version WHEN creating a version THEN it is successfully created`() { - val version = createVersion("1.2.3", snapshot = true, beta = true, alpha = true) + fun `GIVEN a valid rc version WHEN creating a version THEN it is successfully created`() { + val version = createVersion("1.2.3", snapshot = false, rc = true) Truth.assertThat(version.versionMajor).isEqualTo(1) Truth.assertThat(version.versionMinor).isEqualTo(2) Truth.assertThat(version.versionPatch).isEqualTo(3) Truth.assertThat(version.isSnapshot).isFalse() + Truth.assertThat(version.isAlpha).isFalse() Truth.assertThat(version.isBeta).isFalse() - Truth.assertThat(version.isAlpha).isTrue() + Truth.assertThat(version.isRc).isTrue() // Truth.assertThat(version.isLocal).isFalse() // Truth.assertThat(version.isVersionTimestampEnabled).isFalse() // Truth.assertThat(version.featureName).isNull() - Truth.assertThat(version.versionClassifier).isEqualTo("ALPHA") + Truth.assertThat(version.versionClassifier).isEqualTo("RC") Truth.assertThat(version.baseVersion).isEqualTo("1.2.3") - Truth.assertThat(version.toString()).isEqualTo("1.2.3-ALPHA") + Truth.assertThat(version.toString()).isEqualTo("1.2.3-RC") + } + + @Test + fun `GIVEN a valid alpha, beta & snapshot version WHEN creating a version THEN it is successfully created`() { + val version = createVersion("1.2.3", snapshot = true, alpha = true, beta = true) + + Truth.assertThat(version.versionMajor).isEqualTo(1) + Truth.assertThat(version.versionMinor).isEqualTo(2) + Truth.assertThat(version.versionPatch).isEqualTo(3) + Truth.assertThat(version.isSnapshot).isFalse() + Truth.assertThat(version.isAlpha).isFalse() + Truth.assertThat(version.isBeta).isTrue() + Truth.assertThat(version.isRc).isFalse() + // Truth.assertThat(version.isLocal).isFalse() + // Truth.assertThat(version.isVersionTimestampEnabled).isFalse() + // Truth.assertThat(version.featureName).isNull() + Truth.assertThat(version.versionClassifier).isEqualTo("BETA") + Truth.assertThat(version.baseVersion).isEqualTo("1.2.3") + Truth.assertThat(version.toString()).isEqualTo("1.2.3-BETA") } @Test @@ -131,8 +157,9 @@ class VersionTest { Truth.assertThat(version.versionMinor).isEqualTo(2) Truth.assertThat(version.versionPatch).isEqualTo(3) Truth.assertThat(version.isSnapshot).isFalse() - Truth.assertThat(version.isBeta).isFalse() Truth.assertThat(version.isAlpha).isFalse() + Truth.assertThat(version.isBeta).isFalse() + Truth.assertThat(version.isRc).isFalse() // Truth.assertThat(version.isLocal).isFalse() // Truth.assertThat(version.isVersionTimestampEnabled).isFalse() // Truth.assertThat(version.featureName).isNull() @@ -156,6 +183,7 @@ class VersionTest { Truth.assertThat(version.isSnapshot).isTrue() Truth.assertThat(version.isBeta).isFalse() Truth.assertThat(version.isAlpha).isFalse() + Truth.assertThat(version.isRc).isFalse() // Truth.assertThat(version.isLocal).isFalse() // Truth.assertThat(version.isVersionTimestampEnabled).isFalse() // Truth.assertThat(version.featureName).isNull() @@ -302,6 +330,7 @@ class VersionTest { Truth.assertThat(version.isSnapshot).isFalse() Truth.assertThat(version.isBeta).isFalse() Truth.assertThat(version.isAlpha).isFalse() + Truth.assertThat(version.isRc).isFalse() // Truth.assertThat(version.isLocal).isFalse() // Truth.assertThat(version.isVersionTimestampEnabled).isFalse() @@ -313,6 +342,7 @@ class VersionTest { Truth.assertThat(version.isSnapshot).isFalse() Truth.assertThat(version.isBeta).isFalse() Truth.assertThat(version.isAlpha).isFalse() + Truth.assertThat(version.isRc).isFalse() // Truth.assertThat(version.isLocal).isFalse() // Truth.assertThat(version.isVersionTimestampEnabled).isFalse() } @@ -328,6 +358,23 @@ class VersionTest { Truth.assertThat(version.isSnapshot).isTrue() Truth.assertThat(version.isBeta).isFalse() Truth.assertThat(version.isAlpha).isFalse() + Truth.assertThat(version.isRc).isFalse() + // Truth.assertThat(version.isLocal).isFalse() + // Truth.assertThat(version.isVersionTimestampEnabled).isFalse() + } + + @Test + fun `GIVEN a alpha version WHEN creating a version using the full version`() { + val version = Version("1.2.3-ALPHA") + Truth.assertThat(version.versionMajor).isEqualTo(1) + Truth.assertThat(version.versionMinor).isEqualTo(2) + Truth.assertThat(version.versionPatch).isEqualTo(3) + Truth.assertThat(version.toString()).isEqualTo("1.2.3-ALPHA") + Truth.assertThat(version.versionClassifier).isEqualTo("ALPHA") + Truth.assertThat(version.isSnapshot).isFalse() + Truth.assertThat(version.isAlpha).isTrue() + Truth.assertThat(version.isBeta).isFalse() + Truth.assertThat(version.isRc).isFalse() // Truth.assertThat(version.isLocal).isFalse() // Truth.assertThat(version.isVersionTimestampEnabled).isFalse() } @@ -348,16 +395,17 @@ class VersionTest { } @Test - fun `GIVEN a alpha version WHEN creating a version using the full version`() { - val version = Version("1.2.3-ALPHA") + fun `GIVEN a rc version WHEN creating a version using the full version`() { + val version = Version("1.2.3-RC") Truth.assertThat(version.versionMajor).isEqualTo(1) Truth.assertThat(version.versionMinor).isEqualTo(2) Truth.assertThat(version.versionPatch).isEqualTo(3) - Truth.assertThat(version.toString()).isEqualTo("1.2.3-ALPHA") - Truth.assertThat(version.versionClassifier).isEqualTo("ALPHA") + Truth.assertThat(version.toString()).isEqualTo("1.2.3-RC") + Truth.assertThat(version.versionClassifier).isEqualTo("RC") Truth.assertThat(version.isSnapshot).isFalse() + Truth.assertThat(version.isAlpha).isFalse() Truth.assertThat(version.isBeta).isFalse() - Truth.assertThat(version.isAlpha).isTrue() + Truth.assertThat(version.isRc).isTrue() // Truth.assertThat(version.isLocal).isFalse() // Truth.assertThat(version.isVersionTimestampEnabled).isFalse() } @@ -371,8 +419,9 @@ class VersionTest { Truth.assertThat(version.toString()).isEqualTo("1.2.3-UNKNOWN") Truth.assertThat(version.versionClassifier).isEqualTo("UNKNOWN") Truth.assertThat(version.isSnapshot).isFalse() - Truth.assertThat(version.isBeta).isFalse() Truth.assertThat(version.isAlpha).isFalse() + Truth.assertThat(version.isBeta).isFalse() + Truth.assertThat(version.isRc).isFalse() // Truth.assertThat(version.isLocal).isFalse() // Truth.assertThat(version.isVersionTimestampEnabled).isFalse() } @@ -407,7 +456,7 @@ class VersionTest { createVersion("1.2.3333") } - private fun createVersion(baseVersion: String, snapshot: Boolean? = true, beta: Boolean = false, alpha: Boolean = false): Version { - return Version(baseVersion, SemanticVersionConfig(null, null, snapshot, beta, alpha)) + private fun createVersion(baseVersion: String, snapshot: Boolean? = true, beta: Boolean = false, alpha: Boolean = false, rc: Boolean = false): Version { + return Version(baseVersion, SemanticVersionConfig(null, null, null,null, snapshot, alpha, beta, rc)) } } diff --git a/semantic-version/src/test/java/com/semanticversion/android/AndroidVersionTest.kt b/semantic-version/src/test/java/com/semanticversion/android/AndroidVersionTest.kt index 8616a2a..df00837 100644 --- a/semantic-version/src/test/java/com/semanticversion/android/AndroidVersionTest.kt +++ b/semantic-version/src/test/java/com/semanticversion/android/AndroidVersionTest.kt @@ -93,7 +93,7 @@ class AndroidVersionTest { private fun createVersion(version: String, versionCodePrefix: Int? = null, versionCodeExtraBit: Int = 0, minSdkVersionAsVersionCodePrefix: Boolean = true): AndroidVersion { return AndroidVersion(version, - AndroidSemanticVersionConfig(null, null, null, null, null, null, null, + AndroidSemanticVersionConfig(null, null, null, null, null, null, null, null, versionCodePrefix, minSdkVersionAsVersionCodePrefix, versionCodeExtraBit,