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 +