Skip to content

Commit

Permalink
Add a way to set the version by string by script, property or environ…
Browse files Browse the repository at this point in the history
…ment variable
  • Loading branch information
Azurelol committed May 4, 2022
1 parent 5750dac commit 96464eb
Show file tree
Hide file tree
Showing 6 changed files with 65 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package wooga.gradle.version

import com.wooga.gradle.PlatformUtils
import com.wooga.gradle.PropertyLookup
import com.wooga.gradle.test.PropertyLocation
import com.wooga.gradle.test.PropertyQueryTaskWriter
import wooga.gradle.version.internal.release.semver.ChangeScope
Expand Down Expand Up @@ -273,5 +274,40 @@ class VersionPluginIntegrationSpec extends VersionIntegrationSpec {
"final" | "semver" | ReleaseStage.Final
}

@Unroll
def "can set custom version directly by #location in provided extension"() {

given: "the setting of said version"
def propertiesFile = createFile("gradle.properties")
def escapedValue = (value instanceof String) ? PlatformUtils.escapedPath(value) : value
switch (location) {
case PropertyLocation.script:
buildFile << "project.${property} = ${wrapValueBasedOnType(escapedValue, String)}"
break
case PropertyLocation.property:
propertiesFile << "${extensionName}.${property} = ${escapedValue}"
break
case PropertyLocation.environment:
environmentVariables.set(envNameFromProperty(property), "${value}")
break
default:
break
}

when: ""
def query = new PropertyQueryTaskWriter("project.version", "")
query.write(buildFile)
def result = runTasksSuccessfully(query.taskName)

then:
query.matches(result, value)

where:
property | value | location
"version" | "1.2.3" | PropertyLocation.script
"version" | "1.2.3" | PropertyLocation.property
"version" | "1.2.3" | PropertyLocation.environment
extensionName = "versionBuilder"
}

}
2 changes: 1 addition & 1 deletion src/main/groovy/wooga/gradle/version/VersionPlugin.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ class VersionPlugin implements Plugin<Project> {

extension.versionScheme.set(VersionPluginConventions.versionScheme.getStringValueProvider(project).map({
VersionScheme.valueOf(it.trim())
}))
}))

extension.versionCodeScheme.set(VersionPluginConventions.versionCodeScheme.getStringValueProvider(project).map({
VersionCodeScheme.valueOf(it.trim())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ class VersionPluginConventions {
static final String GIT_ROOT_PROPERTY = "git.root"
static final String UNINITIALIZED_VERSION = '0.1.0-dev.0.uninitialized'

static final PropertyLookup version = new PropertyLookup("VERSION_BUILDER_VERSION", "versionBuilder.version", null)
static final PropertyLookup versionScheme = new PropertyLookup("VERSION_BUILDER_VERSION_SCHEME", ["versionBuilder.versionScheme", "version.scheme"], VersionScheme.semver)
static final PropertyLookup versionCodeScheme = new PropertyLookup("VERSION_BUILDER_VERSION_CODE_SCHEME", "versionBuilder.versionCodeScheme", VersionCodeScheme.none)
static final PropertyLookup versionCodeOffset = new PropertyLookup("VERSION_BUILDER_VERSION_CODE_OFFSET", "versionBuilder.versionCodeOffset", 0)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,12 @@
package wooga.gradle.version

import com.wooga.gradle.BaseSpec
import org.gradle.api.provider.ProviderFactory
import wooga.gradle.version.internal.release.base.ReleaseVersion
import wooga.gradle.version.internal.release.base.TagStrategy
import wooga.gradle.version.internal.release.semver.ChangeScope
import org.ajoberstar.grgit.Grgit
import org.gradle.api.provider.Property
import org.gradle.api.provider.Provider
import wooga.gradle.version.internal.release.semver.SemVerStrategy
import wooga.gradle.version.internal.release.semver.SemVerStrategyState
import wooga.gradle.version.strategies.SemverV2Strategies
import wooga.gradle.version.internal.release.base.ReleaseVersion
import wooga.gradle.version.internal.release.base.TagStrategy
import wooga.gradle.version.internal.release.semver.ChangeScope

trait VersionPluginExtension implements BaseSpec {

Expand Down Expand Up @@ -195,6 +191,10 @@ trait VersionPluginExtension implements BaseSpec {
version = value
}

void setVersion(String value) {
version = providers.provider({ new ReleaseVersion(version: value) })
}

/**
* @return The evaluated version code of the project
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,9 @@ class DefaultVersionPluginExtension implements VersionPluginExtension {
releaseBranchPattern.set(VersionPluginConventions.releaseBranchPattern.getStringValueProvider(project))
mainBranchPattern.set(VersionPluginConventions.mainBranchPattern.getStringValueProvider(project))

version = project.provider({
version = VersionPluginConventions.version.getStringValueProvider(project).map({
new ReleaseVersion(version:it)
}).orElse(project.provider({
def versionStrategies = versionStrategies.get()
def defaultStrategy = defaultStrategy.get()
def git = git.getOrNull()
Expand Down Expand Up @@ -195,7 +197,7 @@ class DefaultVersionPluginExtension implements VersionPluginExtension {
} else {
new ReleaseVersion(version: VersionPluginConventions.UNINITIALIZED_VERSION)
}
}.memoize())
}.memoize()))

versionCode = versionCodeScheme.map({ scheme ->
def offset = versionCodeOffset.getOrElse(0)
Expand Down
16 changes: 16 additions & 0 deletions src/test/groovy/wooga/gradle/version/VersionPluginSpec.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -1007,4 +1007,20 @@ class VersionPluginSpec extends ProjectSpec {
"with_underscore" | "1.0.1-branchWithUnderscore00001"
"with-dash" | "1.0.1-branchWithDash00001"
}

def "can set custom version directly by property in provided extension"() {
given:
project.plugins.apply(PLUGIN_NAME)
def extension = project.extensions.getByType(VersionCodeExtension)

when:
project.ext.set(propertyName, version)

then:
project.property("version").get() == version

where:
propertyName | version
"versionBuilder.version" | "1.2.3"
}
}

0 comments on commit 96464eb

Please sign in to comment.