diff --git a/src/GitVersion.App.Tests/GitVersion.App.Tests.csproj b/src/GitVersion.App.Tests/GitVersion.App.Tests.csproj
index 0545e1bacb..5b66e2ca51 100644
--- a/src/GitVersion.App.Tests/GitVersion.App.Tests.csproj
+++ b/src/GitVersion.App.Tests/GitVersion.App.Tests.csproj
@@ -25,6 +25,7 @@
+
diff --git a/src/GitVersion.App.Tests/Helpers/ExecutionResults.cs b/src/GitVersion.App.Tests/Helpers/ExecutionResults.cs
index 74c7048a18..237bad6392 100644
--- a/src/GitVersion.App.Tests/Helpers/ExecutionResults.cs
+++ b/src/GitVersion.App.Tests/Helpers/ExecutionResults.cs
@@ -1,3 +1,4 @@
+using GitVersion.Core.Tests;
using GitVersion.OutputVariables;
namespace GitVersion.App.Tests;
@@ -23,7 +24,7 @@ public virtual GitVersionVariables OutputVariables
var jsonEndIndex = Output.IndexOf('}');
var json = Output.Substring(jsonStartIndex, jsonEndIndex - jsonStartIndex + 1);
- return VersionVariablesHelper.FromJson(json);
+ return json.ToGitVersionVariables();
}
}
}
diff --git a/src/GitVersion.App.Tests/Helpers/ProgramFixture.cs b/src/GitVersion.App.Tests/Helpers/ProgramFixture.cs
index 605e612670..0fc15b3fd4 100644
--- a/src/GitVersion.App.Tests/Helpers/ProgramFixture.cs
+++ b/src/GitVersion.App.Tests/Helpers/ProgramFixture.cs
@@ -1,3 +1,4 @@
+using GitVersion.Core.Tests;
using GitVersion.Core.Tests.Helpers;
using GitVersion.Extensions;
using GitVersion.Logging;
@@ -86,11 +87,11 @@ public GitVersionVariables? OutputVariables
{
if (Output.IsNullOrWhiteSpace()) return null;
- var jsonStartIndex = Output.IndexOf("{", StringComparison.Ordinal);
- var jsonEndIndex = Output.IndexOf("}", StringComparison.Ordinal);
+ var jsonStartIndex = Output.IndexOf('{');
+ var jsonEndIndex = Output.IndexOf('}');
var json = Output.Substring(jsonStartIndex, jsonEndIndex - jsonStartIndex + 1);
- return VersionVariablesHelper.FromJson(json);
+ return json.ToGitVersionVariables();
}
}
}
diff --git a/src/GitVersion.App.Tests/JsonOutputOnBuildServerTest.cs b/src/GitVersion.App.Tests/JsonOutputOnBuildServerTest.cs
index ded2bb74fc..641e892cbd 100644
--- a/src/GitVersion.App.Tests/JsonOutputOnBuildServerTest.cs
+++ b/src/GitVersion.App.Tests/JsonOutputOnBuildServerTest.cs
@@ -1,6 +1,6 @@
using GitVersion.Agents;
+using GitVersion.Core.Tests;
using GitVersion.Helpers;
-using GitVersion.OutputVariables;
namespace GitVersion.App.Tests;
@@ -61,7 +61,7 @@ public void BeingOnBuildServerWithOutputJsonAndOutputFileDoesNotFail(string outp
var filePath = PathHelper.Combine(fixture.LocalRepositoryFixture.RepositoryPath, fileName);
var json = File.ReadAllText(filePath);
- var outputVariables = VersionVariablesHelper.FromJson(json);
+ var outputVariables = json.ToGitVersionVariables();
outputVariables.ShouldNotBeNull();
outputVariables.FullSemVer.ShouldBeEquivalentTo(expectedVersion);
}
diff --git a/src/GitVersion.Core.Tests/Extensions/GitVersionVariablesExtensions.cs b/src/GitVersion.Core.Tests/Extensions/GitVersionVariablesExtensions.cs
new file mode 100644
index 0000000000..063470e5a3
--- /dev/null
+++ b/src/GitVersion.Core.Tests/Extensions/GitVersionVariablesExtensions.cs
@@ -0,0 +1,18 @@
+using GitVersion.OutputVariables;
+
+namespace GitVersion.Core.Tests;
+
+public static class GitVersionVariablesExtensions
+{
+ public static string ToJson(this GitVersionVariables gitVersionVariables)
+ {
+ var serializer = new VersionVariableSerializer(new FileSystem());
+ return serializer.ToJson(gitVersionVariables);
+ }
+
+ public static GitVersionVariables ToGitVersionVariables(this string json)
+ {
+ var serializer = new VersionVariableSerializer(new FileSystem());
+ return serializer.FromJson(json);
+ }
+}
diff --git a/src/GitVersion.Core.Tests/VersionCalculation/JsonVersionBuilderTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/JsonVersionBuilderTests.cs
index 457cd2a6de..366cc91a82 100644
--- a/src/GitVersion.Core.Tests/VersionCalculation/JsonVersionBuilderTests.cs
+++ b/src/GitVersion.Core.Tests/VersionCalculation/JsonVersionBuilderTests.cs
@@ -1,5 +1,4 @@
using GitVersion.Core.Tests.Helpers;
-using GitVersion.OutputVariables;
using GitVersion.VersionCalculation;
using Microsoft.Extensions.DependencyInjection;
diff --git a/src/GitVersion.Core.Tests/VersionCalculation/VariableProviderTests.cs b/src/GitVersion.Core.Tests/VersionCalculation/VariableProviderTests.cs
index 68f08c5500..6fc0db10fe 100644
--- a/src/GitVersion.Core.Tests/VersionCalculation/VariableProviderTests.cs
+++ b/src/GitVersion.Core.Tests/VersionCalculation/VariableProviderTests.cs
@@ -1,7 +1,6 @@
using GitVersion.Configuration;
using GitVersion.Core.Tests.Helpers;
using GitVersion.Logging;
-using GitVersion.OutputVariables;
using GitVersion.VersionCalculation;
using Microsoft.Extensions.DependencyInjection;
diff --git a/src/GitVersion.Core/OutputVariables/IVersionVariableSerializer.cs b/src/GitVersion.Core/OutputVariables/IVersionVariableSerializer.cs
new file mode 100644
index 0000000000..af0bd89ad7
--- /dev/null
+++ b/src/GitVersion.Core/OutputVariables/IVersionVariableSerializer.cs
@@ -0,0 +1,9 @@
+namespace GitVersion.OutputVariables;
+
+public interface IVersionVariableSerializer
+{
+ GitVersionVariables FromJson(string json);
+ string ToJson(GitVersionVariables gitVersionVariables);
+ GitVersionVariables FromFile(string filePath);
+ void ToFile(GitVersionVariables gitVersionVariables, string filePath);
+}
diff --git a/src/GitVersion.Core/PublicAPI.Unshipped.txt b/src/GitVersion.Core/PublicAPI.Unshipped.txt
index cec107bea0..a13a12c8a0 100644
--- a/src/GitVersion.Core/PublicAPI.Unshipped.txt
+++ b/src/GitVersion.Core/PublicAPI.Unshipped.txt
@@ -492,61 +492,11 @@ GitVersion.OutputVariables.GitVersionVariables.VersionSourceSha.get -> string?
GitVersion.OutputVariables.GitVersionVariables.VersionSourceSha.init -> void
GitVersion.OutputVariables.GitVersionVariables.WeightedPreReleaseNumber.get -> string!
GitVersion.OutputVariables.GitVersionVariables.WeightedPreReleaseNumber.init -> void
-GitVersion.OutputVariables.VersionVariablesHelper
-GitVersion.OutputVariables.VersionVariablesJsonModel
-GitVersion.OutputVariables.VersionVariablesJsonModel.AssemblySemFileVer.get -> string?
-GitVersion.OutputVariables.VersionVariablesJsonModel.AssemblySemFileVer.set -> void
-GitVersion.OutputVariables.VersionVariablesJsonModel.AssemblySemVer.get -> string?
-GitVersion.OutputVariables.VersionVariablesJsonModel.AssemblySemVer.set -> void
-GitVersion.OutputVariables.VersionVariablesJsonModel.BranchName.get -> string?
-GitVersion.OutputVariables.VersionVariablesJsonModel.BranchName.set -> void
-GitVersion.OutputVariables.VersionVariablesJsonModel.BuildMetaData.get -> int?
-GitVersion.OutputVariables.VersionVariablesJsonModel.BuildMetaData.set -> void
-GitVersion.OutputVariables.VersionVariablesJsonModel.CommitDate.get -> string?
-GitVersion.OutputVariables.VersionVariablesJsonModel.CommitDate.set -> void
-GitVersion.OutputVariables.VersionVariablesJsonModel.CommitsSinceVersionSource.get -> int?
-GitVersion.OutputVariables.VersionVariablesJsonModel.CommitsSinceVersionSource.set -> void
-GitVersion.OutputVariables.VersionVariablesJsonModel.EscapedBranchName.get -> string?
-GitVersion.OutputVariables.VersionVariablesJsonModel.EscapedBranchName.set -> void
-GitVersion.OutputVariables.VersionVariablesJsonModel.FullBuildMetaData.get -> string?
-GitVersion.OutputVariables.VersionVariablesJsonModel.FullBuildMetaData.set -> void
-GitVersion.OutputVariables.VersionVariablesJsonModel.FullSemVer.get -> string?
-GitVersion.OutputVariables.VersionVariablesJsonModel.FullSemVer.set -> void
-GitVersion.OutputVariables.VersionVariablesJsonModel.InformationalVersion.get -> string?
-GitVersion.OutputVariables.VersionVariablesJsonModel.InformationalVersion.set -> void
-GitVersion.OutputVariables.VersionVariablesJsonModel.Major.get -> int?
-GitVersion.OutputVariables.VersionVariablesJsonModel.Major.set -> void
-GitVersion.OutputVariables.VersionVariablesJsonModel.MajorMinorPatch.get -> string?
-GitVersion.OutputVariables.VersionVariablesJsonModel.MajorMinorPatch.set -> void
-GitVersion.OutputVariables.VersionVariablesJsonModel.Minor.get -> int?
-GitVersion.OutputVariables.VersionVariablesJsonModel.Minor.set -> void
-GitVersion.OutputVariables.VersionVariablesJsonModel.Patch.get -> int?
-GitVersion.OutputVariables.VersionVariablesJsonModel.Patch.set -> void
-GitVersion.OutputVariables.VersionVariablesJsonModel.PreReleaseLabel.get -> string?
-GitVersion.OutputVariables.VersionVariablesJsonModel.PreReleaseLabel.set -> void
-GitVersion.OutputVariables.VersionVariablesJsonModel.PreReleaseLabelWithDash.get -> string?
-GitVersion.OutputVariables.VersionVariablesJsonModel.PreReleaseLabelWithDash.set -> void
-GitVersion.OutputVariables.VersionVariablesJsonModel.PreReleaseNumber.get -> int?
-GitVersion.OutputVariables.VersionVariablesJsonModel.PreReleaseNumber.set -> void
-GitVersion.OutputVariables.VersionVariablesJsonModel.PreReleaseTag.get -> string?
-GitVersion.OutputVariables.VersionVariablesJsonModel.PreReleaseTag.set -> void
-GitVersion.OutputVariables.VersionVariablesJsonModel.PreReleaseTagWithDash.get -> string?
-GitVersion.OutputVariables.VersionVariablesJsonModel.PreReleaseTagWithDash.set -> void
-GitVersion.OutputVariables.VersionVariablesJsonModel.SemVer.get -> string?
-GitVersion.OutputVariables.VersionVariablesJsonModel.SemVer.set -> void
-GitVersion.OutputVariables.VersionVariablesJsonModel.Sha.get -> string?
-GitVersion.OutputVariables.VersionVariablesJsonModel.Sha.set -> void
-GitVersion.OutputVariables.VersionVariablesJsonModel.ShortSha.get -> string?
-GitVersion.OutputVariables.VersionVariablesJsonModel.ShortSha.set -> void
-GitVersion.OutputVariables.VersionVariablesJsonModel.UncommittedChanges.get -> int?
-GitVersion.OutputVariables.VersionVariablesJsonModel.UncommittedChanges.set -> void
-GitVersion.OutputVariables.VersionVariablesJsonModel.VersionSourceSha.get -> string?
-GitVersion.OutputVariables.VersionVariablesJsonModel.VersionSourceSha.set -> void
-GitVersion.OutputVariables.VersionVariablesJsonModel.VersionVariablesJsonModel() -> void
-GitVersion.OutputVariables.VersionVariablesJsonModel.WeightedPreReleaseNumber.get -> int?
-GitVersion.OutputVariables.VersionVariablesJsonModel.WeightedPreReleaseNumber.set -> void
-GitVersion.OutputVariables.VersionVariablesJsonStringConverter
-GitVersion.OutputVariables.VersionVariablesJsonStringConverter.VersionVariablesJsonStringConverter() -> void
+GitVersion.OutputVariables.IVersionVariableSerializer
+GitVersion.OutputVariables.IVersionVariableSerializer.FromFile(string! filePath) -> GitVersion.OutputVariables.GitVersionVariables!
+GitVersion.OutputVariables.IVersionVariableSerializer.FromJson(string! json) -> GitVersion.OutputVariables.GitVersionVariables!
+GitVersion.OutputVariables.IVersionVariableSerializer.ToFile(GitVersion.OutputVariables.GitVersionVariables! gitVersionVariables, string! filePath) -> void
+GitVersion.OutputVariables.IVersionVariableSerializer.ToJson(GitVersion.OutputVariables.GitVersionVariables! gitVersionVariables) -> string!
GitVersion.ReferenceName.TryGetSemanticVersion(out (GitVersion.SemanticVersion! Value, string? Name) result, System.Text.RegularExpressions.Regex! versionPatternRegex, string? tagPrefix, GitVersion.SemanticVersionFormat format) -> bool
GitVersion.RefSpecDirection
GitVersion.RefSpecDirection.Fetch = 0 -> GitVersion.RefSpecDirection
@@ -688,7 +638,7 @@ GitVersion.VersionCalculation.BaseVersion.ShouldIncrement.init -> void
GitVersion.VersionCalculation.BaseVersion.Source.get -> string!
GitVersion.VersionCalculation.BaseVersion.Source.init -> void
GitVersion.VersionCalculation.Caching.GitVersionCache
-GitVersion.VersionCalculation.Caching.GitVersionCache.GitVersionCache(GitVersion.IFileSystem! fileSystem, GitVersion.Logging.ILog! log, GitVersion.IGitRepositoryInfo! repositoryInfo) -> void
+GitVersion.VersionCalculation.Caching.GitVersionCache.GitVersionCache(GitVersion.IFileSystem! fileSystem, GitVersion.OutputVariables.IVersionVariableSerializer! serializer, GitVersion.Logging.ILog! log, GitVersion.IGitRepositoryInfo! repositoryInfo) -> void
GitVersion.VersionCalculation.Caching.GitVersionCache.LoadVersionVariablesFromDiskCache(GitVersion.VersionCalculation.Caching.GitVersionCacheKey! cacheKey) -> GitVersion.OutputVariables.GitVersionVariables?
GitVersion.VersionCalculation.Caching.GitVersionCache.WriteVariablesToDiskCache(GitVersion.VersionCalculation.Caching.GitVersionCacheKey! cacheKey, GitVersion.OutputVariables.GitVersionVariables! versionVariables) -> void
GitVersion.VersionCalculation.Caching.GitVersionCacheKey
@@ -765,10 +715,6 @@ override GitVersion.Agents.LocalBuild.IsDefault.get -> bool
override GitVersion.BranchCommit.Equals(object? obj) -> bool
override GitVersion.BranchCommit.GetHashCode() -> int
override GitVersion.Helpers.LambdaKeyComparer.Compare(TSource? x, TSource? y) -> int
-override GitVersion.OutputVariables.VersionVariablesJsonStringConverter.CanConvert(System.Type! typeToConvert) -> bool
-override GitVersion.OutputVariables.VersionVariablesJsonStringConverter.HandleNull.get -> bool
-override GitVersion.OutputVariables.VersionVariablesJsonStringConverter.Read(ref System.Text.Json.Utf8JsonReader reader, System.Type! typeToConvert, System.Text.Json.JsonSerializerOptions! options) -> string!
-override GitVersion.OutputVariables.VersionVariablesJsonStringConverter.Write(System.Text.Json.Utf8JsonWriter! writer, string? value, System.Text.Json.JsonSerializerOptions! options) -> void
override GitVersion.ReferenceName.Equals(object? obj) -> bool
override GitVersion.ReferenceName.GetHashCode() -> int
override GitVersion.ReferenceName.ToString() -> string!
@@ -863,10 +809,6 @@ static GitVersion.Logging.LogExtensions.Warning(this GitVersion.Logging.ILog! lo
static GitVersion.Logging.LogExtensions.Warning(this GitVersion.Logging.ILog! log, GitVersion.Logging.Verbosity verbosity, string! format, params object![]! args) -> void
static GitVersion.Logging.LogExtensions.Warning(this GitVersion.Logging.ILog! log, string! format, params object![]! args) -> void
static GitVersion.Logging.LogExtensions.Write(this GitVersion.Logging.ILog! log, GitVersion.Logging.LogLevel level, string! format, params object![]! args) -> void
-static GitVersion.OutputVariables.VersionVariablesHelper.FromFile(string! filePath, GitVersion.IFileSystem! fileSystem) -> GitVersion.OutputVariables.GitVersionVariables!
-static GitVersion.OutputVariables.VersionVariablesHelper.FromJson(string! json) -> GitVersion.OutputVariables.GitVersionVariables!
-static GitVersion.OutputVariables.VersionVariablesHelper.ToFile(GitVersion.OutputVariables.GitVersionVariables! gitVersionVariables, string! filePath, GitVersion.IFileSystem! fileSystem) -> void
-static GitVersion.OutputVariables.VersionVariablesHelper.ToJson(this GitVersion.OutputVariables.GitVersionVariables! gitVersionVariables) -> string!
static GitVersion.ReferenceName.FromBranchName(string! branchName) -> GitVersion.ReferenceName!
static GitVersion.ReferenceName.Parse(string! canonicalName) -> GitVersion.ReferenceName!
static GitVersion.ReferenceName.TryParse(out GitVersion.ReferenceName? value, string! canonicalName) -> bool
diff --git a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCache.cs b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCache.cs
index 73ecddcf37..340ce21ece 100644
--- a/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCache.cs
+++ b/src/GitVersion.Core/VersionCalculation/Caching/GitVersionCache.cs
@@ -8,12 +8,14 @@ namespace GitVersion.VersionCalculation.Caching;
public class GitVersionCache : IGitVersionCache
{
private readonly IFileSystem fileSystem;
+ private readonly IVersionVariableSerializer serializer;
private readonly ILog log;
private readonly IGitRepositoryInfo repositoryInfo;
- public GitVersionCache(IFileSystem fileSystem, ILog log, IGitRepositoryInfo repositoryInfo)
+ public GitVersionCache(IFileSystem fileSystem, IVersionVariableSerializer serializer, ILog log, IGitRepositoryInfo repositoryInfo)
{
this.fileSystem = fileSystem.NotNull();
+ this.serializer = serializer.NotNull();
this.log = log.NotNull();
this.repositoryInfo = repositoryInfo.NotNull();
}
@@ -25,7 +27,7 @@ public void WriteVariablesToDiskCache(GitVersionCacheKey cacheKey, GitVersionVar
{
try
{
- VersionVariablesHelper.ToFile(versionVariables, cacheFileName, this.fileSystem);
+ serializer.ToFile(versionVariables, cacheFileName);
}
catch (Exception ex)
{
@@ -46,7 +48,7 @@ public void WriteVariablesToDiskCache(GitVersionCacheKey cacheKey, GitVersionVar
}
try
{
- var loadedVariables = VersionVariablesHelper.FromFile(cacheFileName, this.fileSystem);
+ var loadedVariables = serializer.FromFile(cacheFileName);
return loadedVariables;
}
catch (Exception ex)
diff --git a/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj b/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj
index 59b3f274aa..ba37d0b4d6 100644
--- a/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj
+++ b/src/GitVersion.MsBuild.Tests/GitVersion.MsBuild.Tests.csproj
@@ -27,5 +27,6 @@
+
diff --git a/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs b/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs
index f8c2a4f5ae..8eae67273d 100644
--- a/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs
+++ b/src/GitVersion.MsBuild/GitVersionTaskExecutor.cs
@@ -11,14 +11,17 @@ internal class GitVersionTaskExecutor : IGitVersionTaskExecutor
{
private readonly IFileSystem fileSystem;
private readonly IGitVersionOutputTool gitVersionOutputTool;
+ private readonly IVersionVariableSerializer serializer;
private readonly IConfigurationProvider configurationProvider;
private readonly IOptions options;
public GitVersionTaskExecutor(IFileSystem fileSystem, IGitVersionOutputTool gitVersionOutputTool,
- IConfigurationProvider configurationProvider, IOptions options)
+ IVersionVariableSerializer serializer, IConfigurationProvider configurationProvider,
+ IOptions options)
{
this.fileSystem = fileSystem.NotNull();
this.gitVersionOutputTool = gitVersionOutputTool.NotNull();
+ this.serializer = serializer.NotNull();
this.configurationProvider = configurationProvider.NotNull();
this.options = options.NotNull();
}
@@ -104,7 +107,7 @@ public void WriteVersionInfoToBuildLog(WriteVersionInfoToBuildLog task)
private GitVersionVariables GitVersionVariables(GitVersionTaskBase task)
{
- var versionVariables = VersionVariablesHelper.FromFile(task.VersionFile, this.fileSystem);
+ var versionVariables = serializer.FromFile(task.VersionFile);
return versionVariables;
}
}
diff --git a/src/GitVersion.Output/GitVersionOutputModule.cs b/src/GitVersion.Output/GitVersionOutputModule.cs
index 45b75136a5..3787e1b9e2 100644
--- a/src/GitVersion.Output/GitVersionOutputModule.cs
+++ b/src/GitVersion.Output/GitVersionOutputModule.cs
@@ -2,6 +2,7 @@
using GitVersion.Output.GitVersionInfo;
using GitVersion.Output.OutputGenerator;
using GitVersion.Output.WixUpdater;
+using GitVersion.OutputVariables;
using Microsoft.Extensions.DependencyInjection;
namespace GitVersion.Output;
@@ -12,6 +13,7 @@ public void RegisterTypes(IServiceCollection services)
{
services.AddSingleton();
services.AddSingleton();
+ services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
services.AddSingleton();
diff --git a/src/GitVersion.Output/OutputGenerator/OutputGenerator.cs b/src/GitVersion.Output/OutputGenerator/OutputGenerator.cs
index 5963515706..8aad348e48 100644
--- a/src/GitVersion.Output/OutputGenerator/OutputGenerator.cs
+++ b/src/GitVersion.Output/OutputGenerator/OutputGenerator.cs
@@ -15,14 +15,17 @@ internal sealed class OutputGenerator : IOutputGenerator
{
private readonly IConsole console;
private readonly IFileSystem fileSystem;
+ private readonly IVersionVariableSerializer serializer;
private readonly IEnvironment environment;
private readonly IOptions options;
private readonly ICurrentBuildAgent buildAgent;
- public OutputGenerator(ICurrentBuildAgent buildAgent, IConsole console, IFileSystem fileSystem, IEnvironment environment, IOptions options)
+ public OutputGenerator(ICurrentBuildAgent buildAgent, IConsole console, IFileSystem fileSystem,
+ IVersionVariableSerializer serializer, IEnvironment environment, IOptions options)
{
this.console = console.NotNull();
this.fileSystem = fileSystem.NotNull();
+ this.serializer = serializer.NotNull();
this.environment = environment;
this.options = options.NotNull();
this.buildAgent = buildAgent.NotNull();
@@ -36,7 +39,7 @@ public void Execute(GitVersionVariables variables, OutputContext context)
this.buildAgent.WriteIntegration(this.console.WriteLine, variables, context.UpdateBuildNumber ?? true);
}
- var json = variables.ToJson();
+ var json = this.serializer.ToJson(variables);
if (gitVersionOptions.Output.Contains(OutputType.File))
{
var retryOperation = new RetryAction();
@@ -55,6 +58,7 @@ public void Execute(GitVersionVariables variables, OutputContext context)
{
throw new WarningException("Cannot specify both /showvariable and /format");
}
+
if (gitVersionOptions.ShowVariable is not null)
{
if (!variables.TryGetValue(gitVersionOptions.ShowVariable, out var part))
@@ -65,6 +69,7 @@ public void Execute(GitVersionVariables variables, OutputContext context)
this.console.WriteLine(part);
return;
}
+
if (gitVersionOptions.Format is not null)
{
var format = gitVersionOptions.Format;
diff --git a/src/GitVersion.Output/PublicAPI.Unshipped.txt b/src/GitVersion.Output/PublicAPI.Unshipped.txt
index b17866672f..946f93a466 100644
--- a/src/GitVersion.Output/PublicAPI.Unshipped.txt
+++ b/src/GitVersion.Output/PublicAPI.Unshipped.txt
@@ -7,3 +7,67 @@ GitVersion.IGitVersionOutputTool.UpdateWixVersionFile(GitVersion.OutputVariables
GitVersion.Output.GitVersionOutputModule
GitVersion.Output.GitVersionOutputModule.GitVersionOutputModule() -> void
GitVersion.Output.GitVersionOutputModule.RegisterTypes(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void
+GitVersion.OutputVariables.VersionVariableSerializer
+GitVersion.OutputVariables.VersionVariableSerializer.FromFile(string! filePath) -> GitVersion.OutputVariables.GitVersionVariables!
+GitVersion.OutputVariables.VersionVariableSerializer.FromJson(string! json) -> GitVersion.OutputVariables.GitVersionVariables!
+GitVersion.OutputVariables.VersionVariableSerializer.ToFile(GitVersion.OutputVariables.GitVersionVariables! gitVersionVariables, string! filePath) -> void
+GitVersion.OutputVariables.VersionVariableSerializer.ToJson(GitVersion.OutputVariables.GitVersionVariables! gitVersionVariables) -> string!
+GitVersion.OutputVariables.VersionVariableSerializer.VersionVariableSerializer(GitVersion.IFileSystem! fileSystem) -> void
+GitVersion.OutputVariables.VersionVariablesJsonModel
+GitVersion.OutputVariables.VersionVariablesJsonModel.AssemblySemFileVer.get -> string?
+GitVersion.OutputVariables.VersionVariablesJsonModel.AssemblySemFileVer.set -> void
+GitVersion.OutputVariables.VersionVariablesJsonModel.AssemblySemVer.get -> string?
+GitVersion.OutputVariables.VersionVariablesJsonModel.AssemblySemVer.set -> void
+GitVersion.OutputVariables.VersionVariablesJsonModel.BranchName.get -> string?
+GitVersion.OutputVariables.VersionVariablesJsonModel.BranchName.set -> void
+GitVersion.OutputVariables.VersionVariablesJsonModel.BuildMetaData.get -> int?
+GitVersion.OutputVariables.VersionVariablesJsonModel.BuildMetaData.set -> void
+GitVersion.OutputVariables.VersionVariablesJsonModel.CommitDate.get -> string?
+GitVersion.OutputVariables.VersionVariablesJsonModel.CommitDate.set -> void
+GitVersion.OutputVariables.VersionVariablesJsonModel.CommitsSinceVersionSource.get -> int?
+GitVersion.OutputVariables.VersionVariablesJsonModel.CommitsSinceVersionSource.set -> void
+GitVersion.OutputVariables.VersionVariablesJsonModel.EscapedBranchName.get -> string?
+GitVersion.OutputVariables.VersionVariablesJsonModel.EscapedBranchName.set -> void
+GitVersion.OutputVariables.VersionVariablesJsonModel.FullBuildMetaData.get -> string?
+GitVersion.OutputVariables.VersionVariablesJsonModel.FullBuildMetaData.set -> void
+GitVersion.OutputVariables.VersionVariablesJsonModel.FullSemVer.get -> string?
+GitVersion.OutputVariables.VersionVariablesJsonModel.FullSemVer.set -> void
+GitVersion.OutputVariables.VersionVariablesJsonModel.InformationalVersion.get -> string?
+GitVersion.OutputVariables.VersionVariablesJsonModel.InformationalVersion.set -> void
+GitVersion.OutputVariables.VersionVariablesJsonModel.Major.get -> int?
+GitVersion.OutputVariables.VersionVariablesJsonModel.Major.set -> void
+GitVersion.OutputVariables.VersionVariablesJsonModel.MajorMinorPatch.get -> string?
+GitVersion.OutputVariables.VersionVariablesJsonModel.MajorMinorPatch.set -> void
+GitVersion.OutputVariables.VersionVariablesJsonModel.Minor.get -> int?
+GitVersion.OutputVariables.VersionVariablesJsonModel.Minor.set -> void
+GitVersion.OutputVariables.VersionVariablesJsonModel.Patch.get -> int?
+GitVersion.OutputVariables.VersionVariablesJsonModel.Patch.set -> void
+GitVersion.OutputVariables.VersionVariablesJsonModel.PreReleaseLabel.get -> string?
+GitVersion.OutputVariables.VersionVariablesJsonModel.PreReleaseLabel.set -> void
+GitVersion.OutputVariables.VersionVariablesJsonModel.PreReleaseLabelWithDash.get -> string?
+GitVersion.OutputVariables.VersionVariablesJsonModel.PreReleaseLabelWithDash.set -> void
+GitVersion.OutputVariables.VersionVariablesJsonModel.PreReleaseNumber.get -> int?
+GitVersion.OutputVariables.VersionVariablesJsonModel.PreReleaseNumber.set -> void
+GitVersion.OutputVariables.VersionVariablesJsonModel.PreReleaseTag.get -> string?
+GitVersion.OutputVariables.VersionVariablesJsonModel.PreReleaseTag.set -> void
+GitVersion.OutputVariables.VersionVariablesJsonModel.PreReleaseTagWithDash.get -> string?
+GitVersion.OutputVariables.VersionVariablesJsonModel.PreReleaseTagWithDash.set -> void
+GitVersion.OutputVariables.VersionVariablesJsonModel.SemVer.get -> string?
+GitVersion.OutputVariables.VersionVariablesJsonModel.SemVer.set -> void
+GitVersion.OutputVariables.VersionVariablesJsonModel.Sha.get -> string?
+GitVersion.OutputVariables.VersionVariablesJsonModel.Sha.set -> void
+GitVersion.OutputVariables.VersionVariablesJsonModel.ShortSha.get -> string?
+GitVersion.OutputVariables.VersionVariablesJsonModel.ShortSha.set -> void
+GitVersion.OutputVariables.VersionVariablesJsonModel.UncommittedChanges.get -> int?
+GitVersion.OutputVariables.VersionVariablesJsonModel.UncommittedChanges.set -> void
+GitVersion.OutputVariables.VersionVariablesJsonModel.VersionSourceSha.get -> string?
+GitVersion.OutputVariables.VersionVariablesJsonModel.VersionSourceSha.set -> void
+GitVersion.OutputVariables.VersionVariablesJsonModel.VersionVariablesJsonModel() -> void
+GitVersion.OutputVariables.VersionVariablesJsonModel.WeightedPreReleaseNumber.get -> int?
+GitVersion.OutputVariables.VersionVariablesJsonModel.WeightedPreReleaseNumber.set -> void
+GitVersion.OutputVariables.VersionVariablesJsonStringConverter
+GitVersion.OutputVariables.VersionVariablesJsonStringConverter.VersionVariablesJsonStringConverter() -> void
+override GitVersion.OutputVariables.VersionVariablesJsonStringConverter.CanConvert(System.Type! typeToConvert) -> bool
+override GitVersion.OutputVariables.VersionVariablesJsonStringConverter.HandleNull.get -> bool
+override GitVersion.OutputVariables.VersionVariablesJsonStringConverter.Read(ref System.Text.Json.Utf8JsonReader reader, System.Type! typeToConvert, System.Text.Json.JsonSerializerOptions! options) -> string!
+override GitVersion.OutputVariables.VersionVariablesJsonStringConverter.Write(System.Text.Json.Utf8JsonWriter! writer, string? value, System.Text.Json.JsonSerializerOptions! options) -> void
diff --git a/src/GitVersion.Core/OutputVariables/VersionVariablesHelper.cs b/src/GitVersion.Output/Serializer/VersionVariableSerializer.cs
similarity index 81%
rename from src/GitVersion.Core/OutputVariables/VersionVariablesHelper.cs
rename to src/GitVersion.Output/Serializer/VersionVariableSerializer.cs
index 02f06e4c27..734cb6b263 100644
--- a/src/GitVersion.Core/OutputVariables/VersionVariablesHelper.cs
+++ b/src/GitVersion.Output/Serializer/VersionVariableSerializer.cs
@@ -4,16 +4,20 @@
namespace GitVersion.OutputVariables;
-public static class VersionVariablesHelper
+public class VersionVariableSerializer : IVersionVariableSerializer
{
- public static GitVersionVariables FromJson(string json)
+ private readonly IFileSystem fileSystem;
+
+ public VersionVariableSerializer(IFileSystem fileSystem) => this.fileSystem = fileSystem;
+
+ public GitVersionVariables FromJson(string json)
{
var serializeOptions = JsonSerializerOptions();
var variablePairs = JsonSerializer.Deserialize>(json, serializeOptions);
return FromDictionary(variablePairs);
}
- public static string ToJson(this GitVersionVariables gitVersionVariables)
+ public string ToJson(GitVersionVariables gitVersionVariables)
{
var variablesType = typeof(VersionVariablesJsonModel);
var variables = new VersionVariablesJsonModel();
@@ -29,12 +33,12 @@ public static string ToJson(this GitVersionVariables gitVersionVariables)
return JsonSerializer.Serialize(variables, serializeOptions);
}
- public static GitVersionVariables FromFile(string filePath, IFileSystem fileSystem)
+ public GitVersionVariables FromFile(string filePath)
{
try
{
var retryAction = new RetryAction();
- return retryAction.Execute(() => FromFileInternal(filePath, fileSystem));
+ return retryAction.Execute(() => FromFileInternal(filePath));
}
catch (AggregateException ex)
{
@@ -48,12 +52,12 @@ public static GitVersionVariables FromFile(string filePath, IFileSystem fileSyst
}
}
- public static void ToFile(GitVersionVariables gitVersionVariables, string filePath, IFileSystem fileSystem)
+ public void ToFile(GitVersionVariables gitVersionVariables, string filePath)
{
try
{
var retryAction = new RetryAction();
- retryAction.Execute(() => ToFileInternal(gitVersionVariables, filePath, fileSystem));
+ retryAction.Execute(() => ToFileInternal(gitVersionVariables, filePath));
}
catch (AggregateException ex)
{
@@ -81,15 +85,15 @@ private static GitVersionVariables FromDictionary(IEnumerable
+