Skip to content

Commit

Permalink
Refactor project using gradle-commons
Browse files Browse the repository at this point in the history
  • Loading branch information
Azurelol committed Mar 2, 2022
1 parent 21d9ba1 commit 3934fad
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 56 deletions.
9 changes: 5 additions & 4 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,11 @@ github {
}

dependencies {
compile 'com.github.zafarkhaja:java-semver:0.9.0'
compile 'org.ajoberstar.grgit:grgit-core:4.1.1'
compile 'com.google.guava:guava:23.0'
testCompile 'com.github.stefanbirkner:system-rules:1.18.0'
implementation 'com.github.zafarkhaja:java-semver:0.9.0'
implementation 'org.ajoberstar.grgit:grgit-core:4.1.1'
implementation 'com.google.guava:guava:23.0'
implementation 'com.wooga.gradle:gradle-commons:(0.4,0.5]'
testImplementation 'com.github.stefanbirkner:system-rules:1.18.0'
}

configurations.all {
Expand Down
41 changes: 18 additions & 23 deletions src/main/groovy/wooga/gradle/version/VersionPlugin.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,19 @@ class VersionPlugin implements Plugin<Project> {

@Override
void apply(Project project) {

if (project != project.getRootProject()) {
logger.warn("net.wooga.atlas-version can only be applied to the root project.")
return
}

String gitRoot = project.properties.getOrDefault(VersionConsts.GIT_ROOT_PROPERTY, project.rootProject.projectDir.path)
VersionPluginExtension extension = create_and_configure_extension(project)
// TODO: Does this have to be evaluated here?
String gitRoot = project.properties.getOrDefault(VersionPluginConventions.GIT_ROOT_PROPERTY, project.rootProject.projectDir.path)
VersionPluginExtension extension = createAndConfigureExtension(project)
setProjectVersion(gitRoot, project, extension)
}

private static void setProjectVersion(String gitRoot, Project project, VersionPluginExtension extension) {
try {
Grgit git = Grgit.open(dir: gitRoot)
project.gradle.buildFinished {
Expand All @@ -49,11 +55,11 @@ class VersionPlugin implements Plugin<Project> {
}
extension.git.set(git)
}
catch(RepositoryNotFoundException e) {
catch (RepositoryNotFoundException e) {
project.logger.warn("Git repository not found at $gitRoot ")
}
finally {
def sharedVersion = new ToStringProvider(extension.version.map({it.version}))
def sharedVersion = new ToStringProvider(extension.version.map({ it.version }))
project.allprojects(new Action<Project>() {
@Override
void execute(Project prj) {
Expand All @@ -64,31 +70,20 @@ class VersionPlugin implements Plugin<Project> {
}
}

protected static VersionPluginExtension create_and_configure_extension(Project project) {
protected static VersionPluginExtension createAndConfigureExtension(Project project) {
def extension = project.extensions.create(VersionPluginExtension, EXTENSION_NAME, DefaultVersionPluginExtension, project)

extension.versionScheme.set(project.provider({
def rawValue = System.getenv()[VersionConsts.VERSION_SCHEME_ENV_VAR] ?:
project.properties.getOrDefault(VersionConsts.VERSION_SCHEME_OPTION,
project.properties.get(VersionConsts.LEGACY_VERSION_SCHEME_OPTION))
if(rawValue) {
return VersionScheme.valueOf(rawValue.toString().trim())
}
VersionConsts.VERSION_SCHEME_DEFAULT
}))
extension.versionScheme.set(VersionPluginConventions.versionScheme.getStringValueProvider(project).map({
VersionScheme.valueOf(it.trim())
}))

extension.versionCodeScheme.set(project.provider({
def rawValue = System.getenv()[VersionConsts.VERSION_CODE_SCHEME_ENV_VAR] ?:
project.properties.get(VersionConsts.VERSION_CODE_SCHEME_OPTION)
if(rawValue) {
return VersionCodeScheme.valueOf(rawValue.toString().trim())
}
VersionConsts.VERSION_CODE_SCHEME_DEFAULT
extension.versionCodeScheme.set(VersionPluginConventions.versionCodeScheme.getStringValueProvider(project).map({
VersionCodeScheme.valueOf(it.trim())
}))

// TODO: Refactor once integer / object providers are added on gradle-commons
extension.versionCodeOffset.set(project.provider({
def rawValue = System.getenv()[VersionConsts.VERSION_CODE_OFFSET_ENV_VAR] ?:
project.properties.getOrDefault(VersionConsts.VERSION_CODE_OFFSET_OPTION, "0")
def rawValue = VersionPluginConventions.versionCodeOffset.getValue(project)
Integer.parseInt(rawValue.toString())
}))

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,10 @@

package wooga.gradle.version

class VersionConsts {
import com.wooga.gradle.PropertyLookup

class VersionPluginConventions {

static final String GIT_ROOT_PROPERTY = "git.root"
static final String UNINITIALIZED_VERSION = '0.1.0-dev.0.uninitialized'

Expand Down Expand Up @@ -52,4 +55,13 @@ class VersionConsts {

static final String MAIN_BRANCH_PATTERN_OPTION = "versionBuilder.mainBranchPattern"
static final String MAIN_BRANCH_PATTERN_ENV_VAR = "VERSION_BUILDER_MAIN_BRANCH_PATTERN"

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)

static final PropertyLookup mainBranchPattern = new PropertyLookup("VERSION_BUILDER_MAIN_BRANCH_PATTERN", "versionBuilder.mainBranchPattern", /(^master$|^develop$)/)
static final PropertyLookup releaseBranchPattern = new PropertyLookup("VERSION_BUILDER_RELEASE_BRANCH_PATTERN", "versionBuilder.releaseBranchPattern", /(^release\/.*|^master$)/)
static final PropertyLookup stage = new PropertyLookup("VERSION_BUILDER_STAGE", ["versionBuilder.stage", "release.stage"], null)
static final PropertyLookup scope = new PropertyLookup("VERSION_BUILDER_SCOPE", ["versionBuilder.scope", "release.scope"], null)
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ import org.gradle.api.GradleException
import org.gradle.api.Project
import org.gradle.api.provider.Property
import org.gradle.api.provider.Provider
import wooga.gradle.version.VersionConsts
import wooga.gradle.version.VersionPluginConventions
import wooga.gradle.version.VersionPluginExtension
import wooga.gradle.version.strategies.SemverV1Strategies
import wooga.gradle.version.strategies.SemverV2Strategies
Expand Down Expand Up @@ -253,36 +253,16 @@ class DefaultVersionPluginExtension implements VersionPluginExtension {
preReleaseStrategy.getOrNull(), finalStrategy.getOrNull()].findAll { it != null }
})

scope = project.provider({
String scope = System.getenv()[VersionConsts.VERSION_SCOPE_ENV_VAR] ?:
project.properties.get(VersionConsts.VERSION_SCOPE_OPTION)
if (!scope) {
scope = project.properties.get(VersionConsts.LEGACY_VERSION_SCOPE_OPTION)
}

if (scope) {
return ChangeScope.valueOf(scope.toUpperCase())
scope = VersionPluginConventions.scope.getStringValueProvider(project).map({
if (it) {
return ChangeScope.valueOf(it.toUpperCase())
}
null
})

stage = project.provider({
System.getenv()[VersionConsts.VERSION_STAGE_ENV_VAR] ?:
project.properties.get(VersionConsts.VERSION_STAGE_OPTION) ?:
project.properties.get(VersionConsts.LEGACY_VERSION_STAGE_OPTION)
})

releaseBranchPattern.set( project.provider({
(System.getenv()[VersionConsts.RELEASE_BRANCH_PATTERN_ENV_VAR] ?:
project.properties.get(VersionConsts.RELEASE_BRANCH_PATTERN_OPTION) ?:
VersionConsts.DEFAULT_RELEASE_BRANCH_PATTERN).toString()
}))

mainBranchPattern.set(project.provider({
(System.getenv()[VersionConsts.MAIN_BRANCH_PATTERN_ENV_VAR] ?:
project.properties.get(VersionConsts.MAIN_BRANCH_PATTERN_OPTION) ?:
VersionConsts.DEFAULT_MAIN_BRANCH_PATTERN).toString()
}))
stage = VersionPluginConventions.stage.getStringValueProvider(project)
releaseBranchPattern.set(VersionPluginConventions.releaseBranchPattern.getStringValueProvider(project))
mainBranchPattern.set(VersionPluginConventions.mainBranchPattern.getStringValueProvider(project))

version = project.provider({
def versionStrategies = versionStrategies.get()
Expand Down Expand Up @@ -310,7 +290,7 @@ class DefaultVersionPluginExtension implements VersionPluginExtension {
}
return selectedStrategy.infer(project, git)
} else {
new ReleaseVersion(version: VersionConsts.UNINITIALIZED_VERSION)
new ReleaseVersion(version: VersionPluginConventions.UNINITIALIZED_VERSION)
}
}.memoize())

Expand Down

0 comments on commit 3934fad

Please sign in to comment.