Skip to content

Commit 17715a6

Browse files
committed
feat: inherit version from parent project if not set
1 parent 23518a0 commit 17715a6

File tree

2 files changed

+31
-17
lines changed

2 files changed

+31
-17
lines changed

src/main/java/me/qoomon/gradle/gitversioning/GitVersioningPlugin.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
import java.util.*;
1111
import java.util.Map.Entry;
12+
import java.util.stream.Collectors;
1213

1314
import static java.util.Collections.emptyList;
1415
import static java.util.Collections.singletonList;
@@ -45,11 +46,14 @@ public void apply(@Nonnull Project rootProject) {
4546
.map(it -> new VersionDescription(it.pattern, it.versionFormat, mapPropertyDescription(it.properties)))
4647
.collect(toList()));
4748

49+
50+
final Map<String, Object> originVersionMap = rootProject.getAllprojects().stream().collect(Collectors.toMap(Project::getPath, p -> p.getVersion()));
51+
4852
rootProject.getAllprojects().forEach(project -> {
4953
// TODO check for version is equals to root project
5054

5155
// update version
52-
String gitProjectVersion = gitVersionDetails.getVersionTransformer().apply(project.getVersion().toString());
56+
String gitProjectVersion = gitVersionDetails.getVersionTransformer().apply(resolveOriginVersion(project, originVersionMap));
5357

5458
project.getLogger().info(project.getDisplayName() + " - git versioning [" + project.getVersion() + " -> " + gitProjectVersion + "]"
5559
+ " (" + gitVersionDetails.getCommitRefType() + ":" + gitVersionDetails.getCommitRefName() + ")");
@@ -75,6 +79,21 @@ public void apply(@Nonnull Project rootProject) {
7579
});
7680
}
7781

82+
private String resolveOriginVersion(Project project, Map<String,Object> originVersionMap) {
83+
84+
String projectVersion = originVersionMap.get(project.getPath()).toString();
85+
if (!projectVersion.equals("unspecified")) {
86+
return projectVersion;
87+
}
88+
89+
if(project.getParent() == null){
90+
return "unspecified";
91+
}
92+
93+
return resolveOriginVersion(project.getParent(), originVersionMap);
94+
95+
}
96+
7897
private Map<String, String> getProjectStringProperties(Project project) {
7998
Map<String, String> result = new HashMap<>();
8099
for (Entry<String, ?> entry : project.getProperties().entrySet()) {

src/test/resources/testProjects/multiModuleProject/build.gradle

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,29 @@
11
plugins {
2-
id 'me.qoomon.git-versioning' version '1.2.0'
2+
id 'me.qoomon.git-versioning' version '1.2.2'
33
}
44

55
group = 'me.qoomon'
66
version = '1.0.0-SNAPSHOT'
77

88
gitVersioning {
99

10-
commit {
11-
versionFormat = 'headCommit-${commit.short}-vGIT'
12-
}
13-
1410
branch {
1511
pattern = 'master'
16-
versionFormat = 'headBranch-${branch}-${version}-vGIT'
12+
versionFormat = '${version}-xxx'
1713
}
18-
1914
branch {
20-
pattern = 'feature/(?<feature>.*)'
21-
versionFormat = 'headBranch-feature-${feature}-vGIT'
15+
pattern = 'feature/(?<user>.+)/(?<feature>.+)'
16+
versionFormat = '${version}_${user}_${feature}'
2217
}
2318

24-
branch {
25-
pattern = ".*"
26-
versionFormat = 'headBranch-fallback-${branch}-vGIT'
27-
}
2819

29-
tag {
30-
pattern = 'v(?<release>[0-9]+)'
31-
versionFormat = 'tag-version-${release}-vGIT'
20+
}
21+
22+
allprojects {
23+
task printVersion {
24+
doLast {
25+
println project.version
26+
}
3227
}
3328
}
3429

0 commit comments

Comments
 (0)