Skip to content

Commit 0342ba1

Browse files
committed
Refactor GitVersion.Core for clear, maintainable methods
This commit refactors several methods within GitVersion.Core and its associated test files for better clarity and maintainability. Apart from renaming variables for clearer intent, it also streamlines the use of JsonSerializerOptions and simplifies the use of the 'toJson' method throughout the codebase. Moreover, it adjusts the accessibility of certain methods, modifying them from public to internal where appropriate.
1 parent 2f7c84b commit 0342ba1

File tree

12 files changed

+72
-76
lines changed

12 files changed

+72
-76
lines changed

src/GitVersion.App.Tests/Helpers/ExecutionResults.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ public virtual GitVersionVariables OutputVariables
1919
{
2020
get
2121
{
22-
var jsonStartIndex = Output.IndexOf("{", StringComparison.Ordinal);
23-
var jsonEndIndex = Output.IndexOf("}", StringComparison.Ordinal);
22+
var jsonStartIndex = Output.IndexOf('{');
23+
var jsonEndIndex = Output.IndexOf('}');
2424
var json = Output.Substring(jsonStartIndex, jsonEndIndex - jsonStartIndex + 1);
2525

2626
return VersionVariablesHelper.FromJson(json);

src/GitVersion.Core.Tests/Core/GitVersionExecutorTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public class GitVersionExecutorTests : TestBase
1616
{
1717
private IFileSystem fileSystem;
1818
private ILog log;
19-
private IGitVersionCache gitVersionCache;
19+
private GitVersionCache gitVersionCache;
2020
private IServiceProvider sp;
2121

2222
[Test]
@@ -571,7 +571,7 @@ private IGitVersionCalculateTool GetGitVersionCalculator(GitVersionOptions gitVe
571571

572572
this.fileSystem = this.sp.GetRequiredService<IFileSystem>();
573573
this.log = this.sp.GetRequiredService<ILog>();
574-
this.gitVersionCache = this.sp.GetRequiredService<IGitVersionCache>();
574+
this.gitVersionCache = (GitVersionCache)this.sp.GetRequiredService<IGitVersionCache>();
575575

576576
return this.sp.GetRequiredService<IGitVersionCalculateTool>();
577577
}

src/GitVersion.Core.Tests/Extensions/GitToolsTestingExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ public static void WriteVersionVariables(this RepositoryFixtureBase fixture, str
108108

109109
using var stream = File.Open(versionFile, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
110110
using var writer = new StreamWriter(stream);
111-
writer.Write(versionVariables.ToJsonString());
111+
writer.Write(versionVariables.ToJson());
112112
}
113113

114114
public static void AssertFullSemver(this RepositoryFixtureBase fixture, string fullSemver,

src/GitVersion.Core.Tests/VersionCalculation/JsonVersionBuilderTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,6 @@ public void Json()
2929

3030
var variableProvider = serviceProvider.GetRequiredService<IVariableProvider>();
3131
var variables = variableProvider.GetVariablesFor(semanticVersion, configuration, null);
32-
variables.ToJsonString().ShouldMatchApproved(c => c.SubFolder("Approved"));
32+
variables.ToJson().ShouldMatchApproved(c => c.SubFolder("Approved"));
3333
}
3434
}

src/GitVersion.Core.Tests/VersionCalculation/VariableProviderTests.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public void ProvidesVariablesInContinuousDeliveryModeForPreRelease()
5151
.GetEffectiveConfiguration(ReferenceName.FromBranchName("unstable"));
5252
var variables = this.variableProvider.GetVariablesFor(semanticVersion, configuration, null);
5353

54-
variables.ToJsonString().ShouldMatchApproved(c => c.SubFolder("Approved"));
54+
variables.ToJson().ShouldMatchApproved(c => c.SubFolder("Approved"));
5555
}
5656

5757
[Test]
@@ -77,7 +77,7 @@ public void ProvidesVariablesInContinuousDeploymentModeForPreRelease()
7777
.GetEffectiveConfiguration(ReferenceName.FromBranchName("unstable"));
7878
var variables = this.variableProvider.GetVariablesFor(semanticVersion, configuration, null);
7979

80-
variables.ToJsonString().ShouldMatchApproved(c => c.SubFolder("Approved"));
80+
variables.ToJson().ShouldMatchApproved(c => c.SubFolder("Approved"));
8181
}
8282

8383
[Test]
@@ -101,7 +101,7 @@ public void ProvidesVariablesInContinuousDeliveryModeForStable()
101101
.GetEffectiveConfiguration(ReferenceName.FromBranchName("develop"));
102102
var variables = this.variableProvider.GetVariablesFor(semanticVersion, configuration, null);
103103

104-
variables.ToJsonString().ShouldMatchApproved(c => c.SubFolder("Approved"));
104+
variables.ToJson().ShouldMatchApproved(c => c.SubFolder("Approved"));
105105
}
106106

107107
[Test]
@@ -127,7 +127,7 @@ public void ProvidesVariablesInContinuousDeploymentModeForStable()
127127
.GetEffectiveConfiguration(ReferenceName.FromBranchName("develop"));
128128
var variables = this.variableProvider.GetVariablesFor(semanticVersion, configuration, null);
129129

130-
variables.ToJsonString().ShouldMatchApproved(c => c.SubFolder("Approved"));
130+
variables.ToJson().ShouldMatchApproved(c => c.SubFolder("Approved"));
131131
}
132132

133133
[Test]
@@ -153,7 +153,7 @@ public void ProvidesVariablesInContinuousDeploymentModeForStableWhenCurrentCommi
153153
.GetEffectiveConfiguration(ReferenceName.FromBranchName("develop"));
154154
var variables = this.variableProvider.GetVariablesFor(semanticVersion, configuration, SemanticVersion.Empty);
155155

156-
variables.ToJsonString().ShouldMatchApproved(c => c.SubFolder("Approved"));
156+
variables.ToJson().ShouldMatchApproved(c => c.SubFolder("Approved"));
157157
}
158158

159159
[Test]
@@ -228,7 +228,7 @@ public void ProvidesVariablesInContinuousDeliveryModeForFeatureBranch()
228228
.GetEffectiveConfiguration(ReferenceName.FromBranchName("develop"));
229229
var variables = this.variableProvider.GetVariablesFor(semanticVersion, configuration, null);
230230

231-
variables.ToJsonString().ShouldMatchApproved(c => c.SubFolder("Approved"));
231+
variables.ToJson().ShouldMatchApproved(c => c.SubFolder("Approved"));
232232
}
233233

234234
[Test]
@@ -254,7 +254,7 @@ public void ProvidesVariablesInContinuousDeliveryModeForFeatureBranchWithCustomA
254254
.Build().GetEffectiveConfiguration(ReferenceName.FromBranchName("develop"));
255255
var variables = this.variableProvider.GetVariablesFor(semanticVersion, configuration, null);
256256

257-
variables.ToJsonString().ShouldMatchApproved(c => c.SubFolder("Approved"));
257+
variables.ToJson().ShouldMatchApproved(c => c.SubFolder("Approved"));
258258
}
259259

260260
[Test]
@@ -281,6 +281,6 @@ public void ProvidesVariablesInContinuousDeploymentModeForMainBranchWithEmptyLab
281281
.GetEffectiveConfiguration(ReferenceName.FromBranchName("main"));
282282
var variables = this.variableProvider.GetVariablesFor(semanticVersion, configuration, null);
283283

284-
variables.ToJsonString().ShouldMatchApproved(_ => _.SubFolder("Approved"));
284+
variables.ToJson().ShouldMatchApproved(_ => _.SubFolder("Approved"));
285285
}
286286
}

src/GitVersion.Core/OutputVariables/VersionVariablesHelper.cs

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,22 @@ public static GitVersionVariables FromJson(string json)
1414
return FromDictionary(variablePairs);
1515
}
1616

17+
public static string ToJson(this GitVersionVariables gitVersionVariables)
18+
{
19+
var variablesType = typeof(VersionVariablesJsonModel);
20+
var variables = new VersionVariablesJsonModel();
21+
22+
foreach (var (key, value) in gitVersionVariables.OrderBy(x => x.Key))
23+
{
24+
var propertyInfo = variablesType.GetProperty(key);
25+
propertyInfo?.SetValue(variables, ChangeType(value, propertyInfo.PropertyType));
26+
}
27+
28+
var serializeOptions = JsonSerializerOptions();
29+
30+
return JsonSerializer.Serialize(variables, serializeOptions);
31+
}
32+
1733
public static GitVersionVariables FromFile(string filePath, IFileSystem fileSystem)
1834
{
1935
try
@@ -33,22 +49,6 @@ public static GitVersionVariables FromFile(string filePath, IFileSystem fileSyst
3349
}
3450
}
3551

36-
public static string ToJsonString(this GitVersionVariables gitVersionVariables)
37-
{
38-
var variablesType = typeof(VersionVariablesJsonModel);
39-
var variables = new VersionVariablesJsonModel();
40-
41-
foreach (var (key, value) in gitVersionVariables.OrderBy(x => x.Key))
42-
{
43-
var propertyInfo = variablesType.GetProperty(key);
44-
propertyInfo?.SetValue(variables, ChangeType(value, propertyInfo.PropertyType));
45-
}
46-
47-
var serializeOptions = JsonSerializerOptions();
48-
49-
return JsonSerializer.Serialize(variables, serializeOptions);
50-
}
51-
5252
private static GitVersionVariables FromDictionary(IEnumerable<KeyValuePair<string, string>>? properties)
5353
{
5454
var type = typeof(GitVersionVariables);
@@ -72,11 +72,7 @@ private static GitVersionVariables FromFileInternal(string filePath, IFileSystem
7272
return versionVariables;
7373
}
7474

75-
private static JsonSerializerOptions JsonSerializerOptions()
76-
{
77-
var serializeOptions = new JsonSerializerOptions { WriteIndented = true, Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping, Converters = { new VersionVariablesJsonStringConverter() } };
78-
return serializeOptions;
79-
}
75+
private static JsonSerializerOptions JsonSerializerOptions() => new() { WriteIndented = true, Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping, Converters = { new VersionVariablesJsonStringConverter() } };
8076

8177
private static object? ChangeType(object? value, Type type)
8278
{

src/GitVersion.Core/PublicAPI.Unshipped.txt

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -688,19 +688,15 @@ GitVersion.VersionCalculation.BaseVersion.ShouldIncrement.init -> void
688688
GitVersion.VersionCalculation.BaseVersion.Source.get -> string!
689689
GitVersion.VersionCalculation.BaseVersion.Source.init -> void
690690
GitVersion.VersionCalculation.Caching.GitVersionCache
691-
GitVersion.VersionCalculation.Caching.GitVersionCache.GetCacheDirectory() -> string!
692-
GitVersion.VersionCalculation.Caching.GitVersionCache.GetCacheFileName(GitVersion.VersionCalculation.Caching.GitVersionCacheKey! cacheKey) -> string!
693691
GitVersion.VersionCalculation.Caching.GitVersionCache.GitVersionCache(GitVersion.IFileSystem! fileSystem, GitVersion.Logging.ILog! log, GitVersion.IGitRepositoryInfo! repositoryInfo) -> void
694-
GitVersion.VersionCalculation.Caching.GitVersionCache.LoadVersionVariablesFromDiskCache(GitVersion.VersionCalculation.Caching.GitVersionCacheKey! key) -> GitVersion.OutputVariables.GitVersionVariables?
695-
GitVersion.VersionCalculation.Caching.GitVersionCache.WriteVariablesToDiskCache(GitVersion.VersionCalculation.Caching.GitVersionCacheKey! cacheKey, GitVersion.OutputVariables.GitVersionVariables! variablesFromCache) -> void
692+
GitVersion.VersionCalculation.Caching.GitVersionCache.LoadVersionVariablesFromDiskCache(GitVersion.VersionCalculation.Caching.GitVersionCacheKey! cacheKey) -> GitVersion.OutputVariables.GitVersionVariables?
693+
GitVersion.VersionCalculation.Caching.GitVersionCache.WriteVariablesToDiskCache(GitVersion.VersionCalculation.Caching.GitVersionCacheKey! cacheKey, GitVersion.OutputVariables.GitVersionVariables! versionVariables) -> void
696694
GitVersion.VersionCalculation.Caching.GitVersionCacheKey
697695
GitVersion.VersionCalculation.Caching.GitVersionCacheKey.GitVersionCacheKey(string! value) -> void
698696
GitVersion.VersionCalculation.Caching.GitVersionCacheKey.Value.get -> string!
699697
GitVersion.VersionCalculation.Caching.IGitVersionCache
700-
GitVersion.VersionCalculation.Caching.IGitVersionCache.GetCacheDirectory() -> string!
701-
GitVersion.VersionCalculation.Caching.IGitVersionCache.GetCacheFileName(GitVersion.VersionCalculation.Caching.GitVersionCacheKey! cacheKey) -> string!
702-
GitVersion.VersionCalculation.Caching.IGitVersionCache.LoadVersionVariablesFromDiskCache(GitVersion.VersionCalculation.Caching.GitVersionCacheKey! key) -> GitVersion.OutputVariables.GitVersionVariables?
703-
GitVersion.VersionCalculation.Caching.IGitVersionCache.WriteVariablesToDiskCache(GitVersion.VersionCalculation.Caching.GitVersionCacheKey! cacheKey, GitVersion.OutputVariables.GitVersionVariables! variablesFromCache) -> void
698+
GitVersion.VersionCalculation.Caching.IGitVersionCache.LoadVersionVariablesFromDiskCache(GitVersion.VersionCalculation.Caching.GitVersionCacheKey! cacheKey) -> GitVersion.OutputVariables.GitVersionVariables?
699+
GitVersion.VersionCalculation.Caching.IGitVersionCache.WriteVariablesToDiskCache(GitVersion.VersionCalculation.Caching.GitVersionCacheKey! cacheKey, GitVersion.OutputVariables.GitVersionVariables! versionVariables) -> void
704700
GitVersion.VersionCalculation.CommitMessageIncrementMode
705701
GitVersion.VersionCalculation.CommitMessageIncrementMode.Disabled = 1 -> GitVersion.VersionCalculation.CommitMessageIncrementMode
706702
GitVersion.VersionCalculation.CommitMessageIncrementMode.Enabled = 0 -> GitVersion.VersionCalculation.CommitMessageIncrementMode
@@ -869,7 +865,7 @@ static GitVersion.Logging.LogExtensions.Warning(this GitVersion.Logging.ILog! lo
869865
static GitVersion.Logging.LogExtensions.Write(this GitVersion.Logging.ILog! log, GitVersion.Logging.LogLevel level, string! format, params object![]! args) -> void
870866
static GitVersion.OutputVariables.VersionVariablesHelper.FromFile(string! filePath, GitVersion.IFileSystem! fileSystem) -> GitVersion.OutputVariables.GitVersionVariables!
871867
static GitVersion.OutputVariables.VersionVariablesHelper.FromJson(string! json) -> GitVersion.OutputVariables.GitVersionVariables!
872-
static GitVersion.OutputVariables.VersionVariablesHelper.ToJsonString(this GitVersion.OutputVariables.GitVersionVariables! gitVersionVariables) -> string!
868+
static GitVersion.OutputVariables.VersionVariablesHelper.ToJson(this GitVersion.OutputVariables.GitVersionVariables! gitVersionVariables) -> string!
873869
static GitVersion.ReferenceName.FromBranchName(string! branchName) -> GitVersion.ReferenceName!
874870
static GitVersion.ReferenceName.Parse(string! canonicalName) -> GitVersion.ReferenceName!
875871
static GitVersion.ReferenceName.TryParse(out GitVersion.ReferenceName? value, string! canonicalName) -> bool

src/GitVersion.Core/VersionCalculation/Caching/GitVersionCache.cs

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,14 @@ public GitVersionCache(IFileSystem fileSystem, ILog log, IGitRepositoryInfo repo
1919
this.repositoryInfo = repositoryInfo.NotNull();
2020
}
2121

22-
public void WriteVariablesToDiskCache(GitVersionCacheKey cacheKey, GitVersionVariables variablesFromCache)
22+
public void WriteVariablesToDiskCache(GitVersionCacheKey cacheKey, GitVersionVariables versionVariables)
2323
{
2424
var cacheFileName = GetCacheFileName(cacheKey);
2525

2626
Dictionary<string, string?> dictionary;
2727
using (this.log.IndentLog("Creating dictionary"))
2828
{
29-
dictionary = variablesFromCache.ToDictionary(x => x.Key, x => x.Value);
29+
dictionary = versionVariables.ToDictionary(x => x.Key, x => x.Value);
3030
}
3131

3232
void WriteCacheOperation()
@@ -44,26 +44,11 @@ void WriteCacheOperation()
4444
retryOperation.Execute(WriteCacheOperation);
4545
}
4646

47-
public string GetCacheFileName(GitVersionCacheKey cacheKey)
48-
{
49-
var cacheDir = PrepareCacheDirectory();
50-
var cacheFileName = GetCacheFileName(cacheKey, cacheDir);
51-
return cacheFileName;
52-
}
53-
54-
public string GetCacheDirectory()
55-
{
56-
var gitDir = this.repositoryInfo.DotGitDirectory;
57-
return PathHelper.Combine(gitDir, "gitversion_cache");
58-
}
59-
60-
public GitVersionVariables? LoadVersionVariablesFromDiskCache(GitVersionCacheKey key)
47+
public GitVersionVariables? LoadVersionVariablesFromDiskCache(GitVersionCacheKey cacheKey)
6148
{
6249
using (this.log.IndentLog("Loading version variables from disk cache"))
6350
{
64-
var cacheDir = PrepareCacheDirectory();
65-
66-
var cacheFileName = GetCacheFileName(key, cacheDir);
51+
var cacheFileName = GetCacheFileName(cacheKey);
6752
if (!this.fileSystem.Exists(cacheFileName))
6853
{
6954
this.log.Info("Cache file " + cacheFileName + " not found.");
@@ -96,6 +81,18 @@ public string GetCacheDirectory()
9681
}
9782
}
9883

84+
internal string GetCacheFileName(GitVersionCacheKey cacheKey)
85+
{
86+
var cacheDir = PrepareCacheDirectory();
87+
return GetCacheFileName(cacheKey, cacheDir);
88+
}
89+
90+
internal string GetCacheDirectory()
91+
{
92+
var gitDir = this.repositoryInfo.DotGitDirectory;
93+
return PathHelper.Combine(gitDir, "gitversion_cache");
94+
}
95+
9996
private string PrepareCacheDirectory()
10097
{
10198
var cacheDir = GetCacheDirectory();

src/GitVersion.Core/VersionCalculation/Caching/IGitVersionCache.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ namespace GitVersion.VersionCalculation.Caching;
44

55
public interface IGitVersionCache
66
{
7-
void WriteVariablesToDiskCache(GitVersionCacheKey cacheKey, GitVersionVariables variablesFromCache);
8-
string GetCacheDirectory();
9-
GitVersionVariables? LoadVersionVariablesFromDiskCache(GitVersionCacheKey key);
10-
string GetCacheFileName(GitVersionCacheKey cacheKey);
7+
void WriteVariablesToDiskCache(GitVersionCacheKey cacheKey, GitVersionVariables versionVariables);
8+
GitVersionVariables? LoadVersionVariablesFromDiskCache(GitVersionCacheKey cacheKey);
119
}

src/GitVersion.MsBuild/GitVersionTaskExecutor.cs

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public GitVersionTaskExecutor(IFileSystem fileSystem, IGitVersionOutputTool gitV
2525

2626
public void GetVersion(GetVersion task)
2727
{
28-
var versionVariables = VersionVariablesHelper.FromFile(task.VersionFile, fileSystem);
28+
var versionVariables = GitVersionVariables(task);
2929
var outputType = typeof(GetVersion);
3030
foreach (var (key, value) in versionVariables)
3131
{
@@ -35,7 +35,7 @@ public void GetVersion(GetVersion task)
3535

3636
public void UpdateAssemblyInfo(UpdateAssemblyInfo task)
3737
{
38-
var versionVariables = VersionVariablesHelper.FromFile(task.VersionFile, fileSystem);
38+
var versionVariables = GitVersionVariables(task);
3939
FileHelper.DeleteTempFiles();
4040
FileHelper.CheckForInvalidFiles(task.CompileFiles, task.ProjectFile);
4141

@@ -59,7 +59,7 @@ public void UpdateAssemblyInfo(UpdateAssemblyInfo task)
5959

6060
public void GenerateGitVersionInformation(GenerateGitVersionInformation task)
6161
{
62-
var versionVariables = VersionVariablesHelper.FromFile(task.VersionFile, fileSystem);
62+
var versionVariables = GitVersionVariables(task);
6363

6464
if (!string.IsNullOrEmpty(task.IntermediateOutputPath))
6565
{
@@ -72,13 +72,14 @@ public void GenerateGitVersionInformation(GenerateGitVersionInformation task)
7272

7373
var gitVersionOptions = this.options.Value;
7474
gitVersionOptions.WorkingDirectory = fileWriteInfo.WorkingDirectory;
75-
var targetNamespace = getTargetNamespace(task);
75+
var targetNamespace = GetTargetNamespace(task);
7676
gitVersionOutputTool.GenerateGitVersionInformation(versionVariables, fileWriteInfo, targetNamespace);
77+
return;
7778

78-
static string? getTargetNamespace(GenerateGitVersionInformation task)
79+
static string? GetTargetNamespace(GenerateGitVersionInformation task)
7980
{
8081
string? targetNamespace = null;
81-
if (string.Equals(task.UseProjectNamespaceForGitVersionInformation, "true", StringComparison.OrdinalIgnoreCase))
82+
if (bool.TryParse(task.UseProjectNamespaceForGitVersionInformation, out var useTargetPathAsRootNamespace) && useTargetPathAsRootNamespace)
8283
{
8384
targetNamespace = task.RootNamespace;
8485
if (string.IsNullOrWhiteSpace(targetNamespace))
@@ -93,11 +94,17 @@ public void GenerateGitVersionInformation(GenerateGitVersionInformation task)
9394

9495
public void WriteVersionInfoToBuildLog(WriteVersionInfoToBuildLog task)
9596
{
96-
var versionVariables = VersionVariablesHelper.FromFile(task.VersionFile, fileSystem);
97+
var versionVariables = GitVersionVariables(task);
9798

9899
var gitVersionOptions = this.options.Value;
99100
var configuration = this.configurationProvider.Provide(gitVersionOptions.ConfigurationInfo.OverrideConfiguration);
100101

101102
gitVersionOutputTool.OutputVariables(versionVariables, configuration.UpdateBuildNumber);
102103
}
104+
105+
private GitVersionVariables GitVersionVariables(GitVersionTaskBase task)
106+
{
107+
var versionVariables = VersionVariablesHelper.FromFile(task.VersionFile, this.fileSystem);
108+
return versionVariables;
109+
}
103110
}

0 commit comments

Comments
 (0)