Skip to content
This repository has been archived by the owner on Dec 5, 2024. It is now read-only.

Commit

Permalink
make is<Stage> extension methods public again (#69)
Browse files Browse the repository at this point in the history
  • Loading branch information
Joaquimmnetto authored Jan 16, 2024
1 parent 4af1c91 commit 2ec08a5
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 22 deletions.
48 changes: 26 additions & 22 deletions src/main/groovy/wooga/gradle/version/VersionPluginExtension.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -271,34 +271,38 @@ trait VersionPluginExtension implements BaseSpec {
this.prefix.set(prefix)
}

private final Provider<Boolean> isDevelopment = canRunStageWithName(ReleaseStage.Development, stage)
private final Provider<Boolean> isSnapshot = canRunStageWithName(ReleaseStage.Snapshot, stage)
private final Provider<Boolean> isPrerelease = canRunStageWithName(ReleaseStage.Prerelease, stage)
private final Provider<Boolean> isFinal = canRunStageWithName(ReleaseStage.Final, stage)

private final Provider<ReleaseStage> releaseStage = providers.provider { ->
if (isDevelopment.getOrElse(false)) {
return ReleaseStage.Development
} else if (isSnapshot.getOrElse(false)) {
return ReleaseStage.Snapshot
} else if (isPrerelease.getOrElse(false)) {
return ReleaseStage.Prerelease
} else if (isFinal.getOrElse(false)) {
return ReleaseStage.Final
} else {
return versionScheme.flatMap{scheme ->
stage.map {stageName -> scheme.findStageForStageName(stageName) }
}.orNull
}
}.orElse(ReleaseStage.Unknown)

/**
* @return The deduced release stage for this build
*/
Provider<ReleaseStage> getReleaseStage() {
releaseStage
return providers.provider { ->
def canRunDevelopment = canRunStageWithName(ReleaseStage.Development, stage)
def canRunSnapshot = canRunStageWithName(ReleaseStage.Snapshot, stage)
def canRunPrerelease = canRunStageWithName(ReleaseStage.Prerelease, stage)
def canRunFinal = canRunStageWithName(ReleaseStage.Final, stage)
if (canRunDevelopment.getOrElse(false)) {
return ReleaseStage.Development
} else if (canRunSnapshot.getOrElse(false)) {
return ReleaseStage.Snapshot
} else if (canRunPrerelease.getOrElse(false)) {
return ReleaseStage.Prerelease
} else if (canRunFinal.getOrElse(false)) {
return ReleaseStage.Final
} else {
return versionScheme.flatMap{scheme ->
stage.map {stageName -> scheme.findStageForStageName(stageName) }
}.orNull
}
}.orElse(ReleaseStage.Unknown)
}


final Provider<Boolean> isDevelopment = getReleaseStage().map {it == ReleaseStage.Development }
final Provider<Boolean> isSnapshot = getReleaseStage().map {it == ReleaseStage.Snapshot }
final Provider<Boolean> isPrerelease = getReleaseStage().map {it == ReleaseStage.Prerelease }
final Provider<Boolean> isFinal = getReleaseStage().map {it == ReleaseStage.Final }


/**
* Infers the next version for this project based on extension information and underlying git repository tags.
* @param scheme - version scheme that this project is following
Expand Down
27 changes: 27 additions & 0 deletions src/test/groovy/wooga/gradle/version/VersionPluginSpec.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ package wooga.gradle.version

import nebula.test.ProjectSpec
import org.ajoberstar.grgit.Grgit
import org.gradle.api.provider.Provider
import spock.lang.Ignore
import spock.lang.IgnoreIf
import spock.lang.Unroll
Expand Down Expand Up @@ -1092,4 +1093,30 @@ class VersionPluginSpec extends ProjectSpec {
propertyName | version
"versionBuilder.version" | "1.2.3"
}

def "#stageProperty extension property returns expected value on given #stage"() {
given:
project.plugins.apply(PLUGIN_NAME)
def extension = project.extensions.getByType(VersionPluginExtension)

when:
extension.stage = stage

then:
def stageProvider = extension.properties[stageProperty] as Provider<Boolean>
stageProvider.get() == true
(allStageProperties - [stageProperty]).each { propName ->
assert extension.properties[propName].get() == false, "$propName should return falses"
}

where:
stage | stageProperty
"snapshot" | "isSnapshot"
"dev" | "isDevelopment"
"rc" | "isPrerelease"
"final" | "isFinal"

allStageProperties = ["isSnapshot", "isDevelopment", "isPrerelease", "isFinal"]
}

}

0 comments on commit 2ec08a5

Please sign in to comment.