From f29f4fd171b06f1b61465281a80c17c12e6bf99c Mon Sep 17 00:00:00 2001 From: dvolper Date: Sun, 5 May 2024 19:07:36 +0200 Subject: [PATCH] introduce OutputOptions record instead of interface --- src/Doki.CommandLine/Json/JsonOutputOptionsProvider.cs | 2 +- src/Doki.Output.Abstractions/IOutputOptions.cs | 7 ------- .../{DefaultOutputOptions.cs => OutputOptions.cs} | 6 ++---- src/Doki.Output.ClassLibrary/ClassLibraryOutput.cs | 2 +- src/Doki.Output.ClassLibrary/ClassLibraryOutputOptions.cs | 4 +--- src/Doki.Output.Extensions/IOutputOptionsProvider.cs | 2 +- src/Doki.Output.Extensions/OutputExtensions.cs | 6 +++--- src/Doki.Output.Markdown/MarkdownOutput.cs | 2 +- 8 files changed, 10 insertions(+), 21 deletions(-) delete mode 100644 src/Doki.Output.Abstractions/IOutputOptions.cs rename src/Doki.Output.Abstractions/{DefaultOutputOptions.cs => OutputOptions.cs} (54%) diff --git a/src/Doki.CommandLine/Json/JsonOutputOptionsProvider.cs b/src/Doki.CommandLine/Json/JsonOutputOptionsProvider.cs index 5985c49..36b68a6 100644 --- a/src/Doki.CommandLine/Json/JsonOutputOptionsProvider.cs +++ b/src/Doki.CommandLine/Json/JsonOutputOptionsProvider.cs @@ -18,7 +18,7 @@ internal class JsonOutputOptionsProvider(FileSystemInfo workingDirectory) : IOut }; public TOptions? GetOptions(string outputType) where TOutput : class, IOutput - where TOptions : class, IOutputOptions + where TOptions : OutputOptions { ArgumentNullException.ThrowIfNull(outputType); diff --git a/src/Doki.Output.Abstractions/IOutputOptions.cs b/src/Doki.Output.Abstractions/IOutputOptions.cs deleted file mode 100644 index fd39a75..0000000 --- a/src/Doki.Output.Abstractions/IOutputOptions.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Doki.Output; - -// ReSharper disable once UnusedTypeParameter -public interface IOutputOptions where T : IOutput -{ - DirectoryInfo OutputDirectory { get; } -} \ No newline at end of file diff --git a/src/Doki.Output.Abstractions/DefaultOutputOptions.cs b/src/Doki.Output.Abstractions/OutputOptions.cs similarity index 54% rename from src/Doki.Output.Abstractions/DefaultOutputOptions.cs rename to src/Doki.Output.Abstractions/OutputOptions.cs index 1b4c135..214dea9 100644 --- a/src/Doki.Output.Abstractions/DefaultOutputOptions.cs +++ b/src/Doki.Output.Abstractions/OutputOptions.cs @@ -2,10 +2,8 @@ namespace Doki.Output; -/// -/// Default output options. -/// -public sealed record DefaultOutputOptions : IOutputOptions where T : IOutput +// ReSharper disable once UnusedTypeParameter +public record OutputOptions where T : IOutput { [JsonPropertyName("outputPath")] public DirectoryInfo OutputDirectory { get; init; } = null!; } \ No newline at end of file diff --git a/src/Doki.Output.ClassLibrary/ClassLibraryOutput.cs b/src/Doki.Output.ClassLibrary/ClassLibraryOutput.cs index fe2c889..cf9527e 100644 --- a/src/Doki.Output.ClassLibrary/ClassLibraryOutput.cs +++ b/src/Doki.Output.ClassLibrary/ClassLibraryOutput.cs @@ -1,6 +1,6 @@ namespace Doki.Output.ClassLibrary; -internal class ClassLibraryOutput(IOutputOptions options) : IOutput +public sealed class ClassLibraryOutput(ClassLibraryOutputOptions options) : IOutput { public async Task WriteAsync(ContentList contentList, CancellationToken cancellationToken = default) { diff --git a/src/Doki.Output.ClassLibrary/ClassLibraryOutputOptions.cs b/src/Doki.Output.ClassLibrary/ClassLibraryOutputOptions.cs index a01727a..f15b924 100644 --- a/src/Doki.Output.ClassLibrary/ClassLibraryOutputOptions.cs +++ b/src/Doki.Output.ClassLibrary/ClassLibraryOutputOptions.cs @@ -2,7 +2,7 @@ namespace Doki.Output.ClassLibrary; -public sealed record ClassLibraryOutputOptions : IOutputOptions +public sealed record ClassLibraryOutputOptions : OutputOptions { [JsonPropertyName("namespace")] public string Namespace { get; init; } = "Doki.Content"; @@ -11,6 +11,4 @@ public sealed record ClassLibraryOutputOptions : IOutputOptions(string outputType) where TOutput : class, IOutput - where TOptions : class, IOutputOptions; + where TOptions : OutputOptions; } \ No newline at end of file diff --git a/src/Doki.Output.Extensions/OutputExtensions.cs b/src/Doki.Output.Extensions/OutputExtensions.cs index a7380b2..a329530 100644 --- a/src/Doki.Output.Extensions/OutputExtensions.cs +++ b/src/Doki.Output.Extensions/OutputExtensions.cs @@ -7,16 +7,16 @@ public static class OutputExtensions public static IServiceCollection AddOutputOptions(this IServiceCollection services, string outputType) where TOutput : class, IOutput { - return services.AddOutputOptions>(outputType); + return services.AddOutputOptions>(outputType); } public static IServiceCollection AddOutputOptions(this IServiceCollection services, - string outputType) where TOutput : class, IOutput where TOptions : class, IOutputOptions + string outputType) where TOutput : class, IOutput where TOptions : OutputOptions { ArgumentNullException.ThrowIfNull(services); ArgumentNullException.ThrowIfNull(outputType); - services.AddSingleton>(provider => + services.AddSingleton>(provider => { var optionsProvider = provider.GetService(); var options = optionsProvider?.GetOptions(outputType); diff --git a/src/Doki.Output.Markdown/MarkdownOutput.cs b/src/Doki.Output.Markdown/MarkdownOutput.cs index 7c1d37d..bd7a4c7 100644 --- a/src/Doki.Output.Markdown/MarkdownOutput.cs +++ b/src/Doki.Output.Markdown/MarkdownOutput.cs @@ -3,7 +3,7 @@ namespace Doki.Output.Markdown; -internal class MarkdownOutput(IOutputOptions options) : IOutput +public sealed class MarkdownOutput(OutputOptions options) : IOutput { public async Task WriteAsync(ContentList contentList, CancellationToken cancellationToken = default) {