4
4
using System . Text . RegularExpressions ;
5
5
using BaseVersionCalculators ;
6
6
7
- public class NewNextVersionCalculator
7
+ public class NextVersionCalculator
8
8
{
9
9
IBaseVersionCalculator baseVersionFinder ;
10
10
IMetaDataCalculator metaDataCalculator ;
11
11
HighestTagBaseVersionStrategy highestTagBaseVersionStrategy ;
12
12
13
- public NewNextVersionCalculator ( IBaseVersionCalculator baseVersionCalculator = null , IMetaDataCalculator metaDataCalculator = null )
13
+ public NextVersionCalculator ( IBaseVersionCalculator baseVersionCalculator = null , IMetaDataCalculator metaDataCalculator = null )
14
14
{
15
15
this . metaDataCalculator = metaDataCalculator ?? new MetaDataCalculator ( ) ;
16
16
highestTagBaseVersionStrategy = new HighestTagBaseVersionStrategy ( ) ;
@@ -30,43 +30,52 @@ public SemanticVersion FindVersion(GitVersionContext context)
30
30
if ( baseVersion . ShouldIncrement ) IncrementVersion ( context , baseVersion ) ;
31
31
else Logger . WriteInfo ( "Skipping version increment" ) ;
32
32
33
- if ( baseVersion . ShouldUpdateTag && ! baseVersion . SemanticVersion . PreReleaseTag . HasTag ( ) && ! string . IsNullOrEmpty ( context . Configuration . Tag ) )
33
+ if ( ! context . IsCurrentCommitTagged && ! baseVersion . SemanticVersion . PreReleaseTag . HasTag ( ) && ! string . IsNullOrEmpty ( context . Configuration . Tag ) )
34
34
{
35
- var tagToUse = context . Configuration . Tag ;
36
- if ( tagToUse == "useBranchName" )
37
- {
38
- Logger . WriteInfo ( "Using branch name to calculate version tag" ) ;
39
- var name = baseVersion . BranchNameOverride ?? context . CurrentBranch . Name ;
40
- tagToUse = name . RegexReplace ( context . Configuration . BranchPrefixToTrim , string . Empty , RegexOptions . IgnoreCase ) ;
41
- }
42
- int ? number = null ;
43
- if ( ! string . IsNullOrEmpty ( context . Configuration . TagNumberPattern ) )
44
- {
45
- var match = Regex . Match ( context . CurrentBranch . CanonicalName , context . Configuration . TagNumberPattern ) ;
46
- var numberGroup = match . Groups [ "number" ] ;
47
- if ( numberGroup . Success )
48
- number = int . Parse ( numberGroup . Value ) ;
49
- }
35
+ UpdatePreReleaseTag ( context , baseVersion ) ;
36
+ }
50
37
51
- var lastTag = highestTagBaseVersionStrategy . GetVersion ( context ) ;
52
- if ( number == null &&
53
- lastTag != null &&
54
- ! context . IsCurrentCommitTagged &&
55
- MajorMinorPatchEqual ( lastTag . SemanticVersion , baseVersion . SemanticVersion ) &&
56
- lastTag . SemanticVersion . PreReleaseTag . HasTag ( ) )
38
+ baseVersion . SemanticVersion . BuildMetaData = metaDataCalculator . Create ( baseVersion . BaseVersionSource , context ) ;
39
+
40
+ return baseVersion . SemanticVersion ;
41
+ }
42
+
43
+ void UpdatePreReleaseTag ( GitVersionContext context , BaseVersion baseVersion )
44
+ {
45
+ var tagToUse = context . Configuration . Tag ;
46
+ if ( tagToUse == "useBranchName" )
47
+ {
48
+ Logger . WriteInfo ( "Using branch name to calculate version tag" ) ;
49
+ var name = baseVersion . BranchNameOverride ?? context . CurrentBranch . Name ;
50
+ tagToUse = name . RegexReplace ( context . Configuration . BranchPrefixToTrim , string . Empty , RegexOptions . IgnoreCase ) ;
51
+ }
52
+ int ? number = null ;
53
+ if ( ! string . IsNullOrEmpty ( context . Configuration . TagNumberPattern ) )
54
+ {
55
+ var match = Regex . Match ( context . CurrentBranch . CanonicalName , context . Configuration . TagNumberPattern ) ;
56
+ var numberGroup = match . Groups [ "number" ] ;
57
+ if ( numberGroup . Success )
57
58
{
58
- number = lastTag . SemanticVersion . PreReleaseTag . Number + 1 ;
59
+ number = int . Parse ( numberGroup . Value ) ;
59
60
}
61
+ }
60
62
61
- if ( number == null )
62
- number = 1 ;
63
-
64
- baseVersion . SemanticVersion . PreReleaseTag = new SemanticVersionPreReleaseTag ( tagToUse , number ) ;
63
+ var lastTag = highestTagBaseVersionStrategy . GetVersion ( context ) ;
64
+ if ( number == null &&
65
+ lastTag != null &&
66
+ ! context . IsCurrentCommitTagged &&
67
+ MajorMinorPatchEqual ( lastTag . SemanticVersion , baseVersion . SemanticVersion ) &&
68
+ lastTag . SemanticVersion . PreReleaseTag . HasTag ( ) )
69
+ {
70
+ number = lastTag . SemanticVersion . PreReleaseTag . Number + 1 ;
65
71
}
66
72
67
- baseVersion . SemanticVersion . BuildMetaData = metaDataCalculator . Create ( baseVersion . BaseVersionSource , context ) ;
73
+ if ( number == null )
74
+ {
75
+ number = 1 ;
76
+ }
68
77
69
- return baseVersion . SemanticVersion ;
78
+ baseVersion . SemanticVersion . PreReleaseTag = new SemanticVersionPreReleaseTag ( tagToUse , number ) ;
70
79
}
71
80
72
81
static bool MajorMinorPatchEqual ( SemanticVersion lastTag , SemanticVersion baseVersion )
0 commit comments