|
1 | 1 | namespace GitVersion
|
2 | 2 | {
|
3 | 3 | using System;
|
| 4 | + using System.Collections.Generic; |
4 | 5 | using System.Linq;
|
5 | 6 | using System.Text.RegularExpressions;
|
6 | 7 |
|
@@ -35,19 +36,30 @@ public override string GenerateSetVersionMessage(VersionVariables variables)
|
35 | 36 | {
|
36 | 37 | // For VSO, we'll get the Build Number and insert GitVersion variables where
|
37 | 38 | // specified
|
38 |
| - var buildNum = Environment.GetEnvironmentVariable("BUILD_BUILDNUMBER"); |
| 39 | + var buildNumberEnv = Environment.GetEnvironmentVariable("BUILD_BUILDNUMBER"); |
| 40 | + if (String.IsNullOrWhiteSpace(buildNumberEnv)) |
| 41 | + return variables.FullSemVer; |
39 | 42 |
|
40 |
| - var newBuildNum = variables.Aggregate(buildNum, (current, kvp) => |
41 |
| - current.RegexReplace(string.Format(@"\$\(GITVERSION[_\.]{0}\)", kvp.Key), kvp.Value ?? string.Empty, RegexOptions.IgnoreCase)); |
| 43 | + var newBuildNumber = variables.Aggregate(buildNumberEnv, ReplaceVariables); |
42 | 44 |
|
43 | 45 | // If no variable substitution has happened, use FullSemVer
|
44 |
| - if (buildNum == newBuildNum) |
| 46 | + if (buildNumberEnv == newBuildNumber) |
45 | 47 | {
|
46 |
| - var buildNumber = variables.FullSemVer.EndsWith("+0") ? variables.FullSemVer.Substring(0, variables.FullSemVer.Length - 2) : variables.FullSemVer; |
47 |
| - return string.Format("##vso[build.updatebuildnumber]{0}", buildNumber); |
| 48 | + var buildNumber = variables.FullSemVer.EndsWith("+0") |
| 49 | + ? variables.FullSemVer.Substring(0, variables.FullSemVer.Length - 2) |
| 50 | + : variables.FullSemVer; |
| 51 | + |
| 52 | + return $"##vso[build.updatebuildnumber]{buildNumber}"; |
48 | 53 | }
|
49 | 54 |
|
50 |
| - return string.Format("##vso[build.updatebuildnumber]{0}", newBuildNum); |
| 55 | + return $"##vso[build.updatebuildnumber]{newBuildNumber}"; |
| 56 | + } |
| 57 | + |
| 58 | + private static string ReplaceVariables(string buildNumberEnv, KeyValuePair<string, string> variable) |
| 59 | + { |
| 60 | + var pattern = $@"\$\(GITVERSION[_\.]{variable.Key}\)"; |
| 61 | + var replacement = variable.Value ?? string.Empty; |
| 62 | + return buildNumberEnv.RegexReplace(pattern, replacement, RegexOptions.IgnoreCase); |
51 | 63 | }
|
52 | 64 | }
|
53 | 65 | }
|
0 commit comments