1
1
namespace GitVersion . VersionCalculation
2
2
{
3
- using System ;
4
3
using System . Text . RegularExpressions ;
5
- using BaseVersionCalculators ;
4
+ using GitVersion . VersionCalculation . BaseVersionCalculators ;
6
5
7
6
public class NextVersionCalculator
8
7
{
@@ -40,27 +39,30 @@ public SemanticVersion FindVersion(GitVersionContext context)
40
39
}
41
40
42
41
var baseVersion = baseVersionFinder . GetBaseVersion ( context ) ;
43
-
44
- if ( baseVersion . ShouldIncrement ) IncrementVersion ( context , baseVersion ) ;
42
+ var semver = baseVersion . SemanticVersion ;
43
+ if ( baseVersion . ShouldIncrement )
44
+ {
45
+ semver = semver . IncrementVersion ( context . Configuration . Increment ) ;
46
+ }
45
47
else Logger . WriteInfo ( "Skipping version increment" ) ;
46
48
47
- if ( ! baseVersion . SemanticVersion . PreReleaseTag . HasTag ( ) && ! string . IsNullOrEmpty ( context . Configuration . Tag ) )
49
+ if ( ! semver . PreReleaseTag . HasTag ( ) && ! string . IsNullOrEmpty ( context . Configuration . Tag ) )
48
50
{
49
- UpdatePreReleaseTag ( context , baseVersion ) ;
51
+ UpdatePreReleaseTag ( context , semver , baseVersion . BranchNameOverride ) ;
50
52
}
51
53
52
- baseVersion . SemanticVersion . BuildMetaData = metaDataCalculator . Create ( baseVersion . BaseVersionSource , context ) ;
54
+ semver . BuildMetaData = metaDataCalculator . Create ( baseVersion . BaseVersionSource , context ) ;
53
55
54
- return baseVersion . SemanticVersion ;
56
+ return semver ;
55
57
}
56
58
57
- void UpdatePreReleaseTag ( GitVersionContext context , BaseVersion baseVersion )
59
+ void UpdatePreReleaseTag ( GitVersionContext context , SemanticVersion semanticVersion , string branchNameOverride )
58
60
{
59
61
var tagToUse = context . Configuration . Tag ;
60
62
if ( tagToUse == "useBranchName" )
61
63
{
62
64
Logger . WriteInfo ( "Using branch name to calculate version tag" ) ;
63
- var name = baseVersion . BranchNameOverride ?? context . CurrentBranch . Name ;
65
+ var name = branchNameOverride ?? context . CurrentBranch . Name ;
64
66
tagToUse = name . RegexReplace ( context . Configuration . BranchPrefixToTrim , string . Empty , RegexOptions . IgnoreCase ) ;
65
67
}
66
68
int ? number = null ;
@@ -77,7 +79,7 @@ void UpdatePreReleaseTag(GitVersionContext context, BaseVersion baseVersion)
77
79
var lastTag = highestTagBaseVersionStrategy . GetVersion ( context ) ;
78
80
if ( number == null &&
79
81
lastTag != null &&
80
- MajorMinorPatchEqual ( lastTag . SemanticVersion , baseVersion . SemanticVersion ) &&
82
+ MajorMinorPatchEqual ( lastTag . SemanticVersion , semanticVersion ) &&
81
83
lastTag . SemanticVersion . PreReleaseTag . HasTag ( ) )
82
84
{
83
85
number = lastTag . SemanticVersion . PreReleaseTag . Number + 1 ;
@@ -88,7 +90,7 @@ void UpdatePreReleaseTag(GitVersionContext context, BaseVersion baseVersion)
88
90
number = 1 ;
89
91
}
90
92
91
- baseVersion . SemanticVersion . PreReleaseTag = new SemanticVersionPreReleaseTag ( tagToUse , number ) ;
93
+ semanticVersion . PreReleaseTag = new SemanticVersionPreReleaseTag ( tagToUse , number ) ;
92
94
}
93
95
94
96
static bool MajorMinorPatchEqual ( SemanticVersion lastTag , SemanticVersion baseVersion )
@@ -97,43 +99,5 @@ static bool MajorMinorPatchEqual(SemanticVersion lastTag, SemanticVersion baseVe
97
99
lastTag . Minor == baseVersion . Minor &&
98
100
lastTag . Patch == baseVersion . Patch ;
99
101
}
100
-
101
- static void IncrementVersion ( GitVersionContext context , BaseVersion baseVersion )
102
- {
103
- if ( ! baseVersion . SemanticVersion . PreReleaseTag . HasTag ( ) )
104
- {
105
- switch ( context . Configuration . Increment )
106
- {
107
- case IncrementStrategy . None :
108
- Logger . WriteInfo ( "Skipping version increment" ) ;
109
- break ;
110
- case IncrementStrategy . Major :
111
- Logger . WriteInfo ( "Incrementing Major Version" ) ;
112
- baseVersion . SemanticVersion . Major ++ ;
113
- baseVersion . SemanticVersion . Minor = 0 ;
114
- baseVersion . SemanticVersion . Patch = 0 ;
115
- break ;
116
- case IncrementStrategy . Minor :
117
- baseVersion . SemanticVersion . Minor ++ ;
118
- baseVersion . SemanticVersion . Patch = 0 ;
119
- Logger . WriteInfo ( "Incrementing Minor Version" ) ;
120
- break ;
121
- case IncrementStrategy . Patch :
122
- baseVersion . SemanticVersion . Patch ++ ;
123
- Logger . WriteInfo ( "Incrementing Patch Version" ) ;
124
- break ;
125
- default :
126
- throw new ArgumentOutOfRangeException ( ) ;
127
- }
128
- }
129
- else
130
- {
131
- if ( baseVersion . SemanticVersion . PreReleaseTag . Number != null )
132
- {
133
- baseVersion . SemanticVersion . PreReleaseTag . Number = baseVersion . SemanticVersion . PreReleaseTag . Number ;
134
- baseVersion . SemanticVersion . PreReleaseTag . Number ++ ;
135
- }
136
- }
137
- }
138
102
}
139
103
}
0 commit comments