Skip to content

Commit 588ccad

Browse files
committed
Added named group for env: in the FormatWith Regex, removed out parameter from CheckAndFormatString
1 parent 2642ef1 commit 588ccad

File tree

2 files changed

+15
-15
lines changed

2 files changed

+15
-15
lines changed

src/GitVersionCore/OutputVariables/VariableProvider.cs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,17 +43,14 @@ public static VersionVariables GetVariablesFor(SemanticVersion semanticVersion,
4343

4444
var semverFormatValues = new SemanticVersionFormatValues(semanticVersion, config);
4545

46-
string informationalVersion;
47-
CheckAndFormatString(config.AssemblyInformationalFormat, semverFormatValues, semverFormatValues.DefaultInformationalVersion,
48-
"AssemblyInformationalVersion", out informationalVersion);
46+
string informationalVersion = CheckAndFormatString(config.AssemblyInformationalFormat, semverFormatValues,
47+
semverFormatValues.DefaultInformationalVersion, "AssemblyInformationalVersion");
4948

50-
string assemblyFileSemVer;
51-
CheckAndFormatString(config.AssemblyFileVersioningFormat, semverFormatValues, semverFormatValues.AssemblyFileSemVer,
52-
"AssemblyFileVersioningFormat", out assemblyFileSemVer);
49+
string assemblyFileSemVer = CheckAndFormatString(config.AssemblyFileVersioningFormat, semverFormatValues,
50+
semverFormatValues.AssemblyFileSemVer, "AssemblyFileVersioningFormat");
5351

54-
string assemblySemVer;
55-
CheckAndFormatString(config.AssemblyVersioningFormat, semverFormatValues, semverFormatValues.AssemblySemVer,
56-
"AssemblyVersioningFormat", out assemblySemVer);
52+
string assemblySemVer = CheckAndFormatString(config.AssemblyVersioningFormat, semverFormatValues,
53+
semverFormatValues.AssemblySemVer, "AssemblyVersioningFormat");
5754

5855
var variables = new VersionVariables(
5956
semverFormatValues.Major,
@@ -95,8 +92,10 @@ static void PromoteNumberOfCommitsToTagNumber(SemanticVersion semanticVersion)
9592
semanticVersion.BuildMetaData.CommitsSinceTag = null;
9693
}
9794

98-
static void CheckAndFormatString<T>(string formatString, T source, string defaultValue, string formatVarName, out string formattedString)
95+
static string CheckAndFormatString<T>(string formatString, T source, string defaultValue, string formatVarName)
9996
{
97+
string formattedString;
98+
10099
if (string.IsNullOrEmpty(formatString))
101100
{
102101
formattedString = defaultValue;
@@ -112,6 +111,8 @@ static void CheckAndFormatString<T>(string formatString, T source, string defau
112111
throw new WarningException(string.Format("Unable to format {0}. Check your format string: {1}", formatVarName, formex.Message));
113112
}
114113
}
114+
115+
return formattedString;
115116
}
116117
}
117118
}

src/GitVersionCore/StringFormatWith.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace GitVersion
88

99
static class StringFormatWithExtension
1010
{
11-
private static readonly Regex TokensRegex = new Regex(@"{(env:)??\w+(\s+(\?\?)??\s+\w+)??}", RegexOptions.Compiled);
11+
private static readonly Regex TokensRegex = new Regex(@"{(?<env>env:)??\w+(\s+(\?\?)??\s+\w+)??}", RegexOptions.Compiled);
1212

1313
/// <summary>
1414
/// Formats a string template with the given source object.
@@ -27,18 +27,17 @@ public static string FormatWith<T>(this string template, T source)
2727

2828
// {MajorMinorPatch}+{Branch}
2929
var objType = source.GetType();
30-
const string ENV_VAR_INDICATOR = "env:";
3130
foreach (Match match in TokensRegex.Matches(template))
3231
{
3332
var memberAccessExpression = TrimBraces(match.Value);
3433
string propertyValue = null;
3534

3635
// Support evaluation of environment variables in the format string
37-
// For example: {env:JENKINS_BUILD_NUMBER??fall-back-string}
36+
// For example: {env:JENKINS_BUILD_NUMBER ?? fall-back-string}
3837

39-
if (memberAccessExpression.StartsWith(ENV_VAR_INDICATOR))
38+
if (match.Groups["env"].Success)
4039
{
41-
memberAccessExpression = memberAccessExpression.TrimStart(ENV_VAR_INDICATOR.ToCharArray()).TrimEnd(ENV_VAR_INDICATOR.ToCharArray());
40+
memberAccessExpression = memberAccessExpression.Substring(memberAccessExpression.IndexOf(':') + 1);
4241
string envVar = memberAccessExpression, fallback = null;
4342
string[] components = (memberAccessExpression.Contains("??")) ? memberAccessExpression.Split(new string[] { "??" }, StringSplitOptions.None) : null;
4443
if (components != null)

0 commit comments

Comments
 (0)