forked from GitTools/GitVersion
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathVariableProvider.cs
More file actions
96 lines (85 loc) · 3.39 KB
/
VariableProvider.cs
File metadata and controls
96 lines (85 loc) · 3.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
using GitVersion.Configuration;
using GitVersion.Core;
using GitVersion.Extensions;
using GitVersion.Formatting;
using GitVersion.OutputVariables;
namespace GitVersion.VersionCalculation;
internal sealed class VariableProvider(IEnvironment environment) : IVariableProvider
{
private readonly IEnvironment environment = environment.NotNull();
public GitVersionVariables GetVariablesFor(
SemanticVersion semanticVersion, IGitVersionConfiguration configuration, int preReleaseWeight)
{
semanticVersion.NotNull();
configuration.NotNull();
var semverFormatValues = new SemanticVersionFormatValues(semanticVersion, configuration, preReleaseWeight);
var informationalVersion = CheckAndFormatString(
configuration.AssemblyInformationalFormat,
semverFormatValues,
semverFormatValues.InformationalVersion,
"AssemblyInformationalVersion"
);
var assemblyFileSemVer = CheckAndFormatString(
configuration.AssemblyFileVersioningFormat,
semverFormatValues,
semverFormatValues.AssemblyFileSemVer,
"AssemblyFileVersioningFormat"
);
var assemblySemVer = CheckAndFormatString(
configuration.AssemblyVersioningFormat,
semverFormatValues,
semverFormatValues.AssemblySemVer,
"AssemblyVersioningFormat"
);
return new(
semverFormatValues.Major,
semverFormatValues.Minor,
semverFormatValues.Patch,
semverFormatValues.BuildMetaData,
semverFormatValues.FullBuildMetaData,
semverFormatValues.BranchName,
semverFormatValues.EscapedBranchName,
semverFormatValues.Sha,
semverFormatValues.ShortSha,
semverFormatValues.MajorMinorPatch,
semverFormatValues.SemVer,
semverFormatValues.FullSemVer,
assemblySemVer,
assemblyFileSemVer,
semverFormatValues.PreReleaseTag,
semverFormatValues.PreReleaseTagWithDash,
semverFormatValues.PreReleaseLabel,
semverFormatValues.PreReleaseLabelWithDash,
semverFormatValues.PreReleaseNumber,
semverFormatValues.WeightedPreReleaseNumber,
informationalVersion,
semverFormatValues.CommitDate,
semverFormatValues.VersionSourceSemVer,
semverFormatValues.VersionSourceSha,
semverFormatValues.VersionSourceDistance,
semverFormatValues.VersionSourceDistance,
semverFormatValues.UncommittedChanges
);
}
private string? CheckAndFormatString<T>(string? formatString, T source, string? defaultValue, string formatVarName)
{
string? formattedString;
if (formatString.IsNullOrEmpty())
{
formattedString = defaultValue;
}
else
{
try
{
formattedString = formatString.FormatWith(source, this.environment)
.RegexReplace(RegexPatterns.Output.SanitizeAssemblyInfoRegexPattern, "-");
}
catch (ArgumentException exception)
{
throw new WarningException($"Unable to format {formatVarName}. Check your format string: {exception.Message}");
}
}
return formattedString;
}
}