Add Json source generation

This commit is contained in:
2022-11-01 22:04:59 +01:00
parent 1bdebd6f5a
commit a36d306279
10 changed files with 74 additions and 16 deletions

View File

@@ -1,7 +1,16 @@
namespace Alma.Configuration.Module;
public record ModuleConfiguration(string? Target, Dictionary<string, string>? Links)
public class ModuleConfiguration
{
public string? Target { get; set; }
public Dictionary<string, string>? Links { get; set; }
public ModuleConfiguration(string? target, Dictionary<string, string>? links)
{
Target = target;
Links = links;
}
public ModuleConfiguration Merge(ModuleConfiguration merge)
{
var mergedLinks = (Links ?? new Dictionary<string, string>())

View File

@@ -1,7 +1,15 @@
namespace Alma.Configuration.Repository;
public record RepositoryConfigurationEntry(
string Name,
string? RepositoryPath,
string? LinkPath
);
public class RepositoryConfigurationEntry
{
public string Name { get; set; }
public string? RepositoryPath { get; set; }
public string? LinkPath { get; set; }
public RepositoryConfigurationEntry(string name, string? repositoryPath, string? linkPath)
{
Name = name;
RepositoryPath = repositoryPath;
LinkPath = linkPath;
}
}

View File

@@ -1,3 +1,11 @@
namespace Alma.Configuration.Repository;
public record RepositoryConfigurationRoot(List<RepositoryConfigurationEntry> Repositories);
public record RepositoryConfigurationRoot
{
public List<RepositoryConfigurationEntry> Repositories { get; set; }
public RepositoryConfigurationRoot(List<RepositoryConfigurationEntry> repositories)
{
Repositories = repositories;
}
}

View File

@@ -0,0 +1,14 @@
using System.Text.Json.Serialization;
using Alma.Configuration.Module;
using Alma.Configuration.Repository;
namespace Alma;
[JsonSourceGenerationOptions(WriteIndented = true)]
[JsonSerializable(typeof(ModuleConfigurationRoot))]
[JsonSerializable(typeof(ModuleConfiguration))]
[JsonSerializable(typeof(RepositoryConfigurationEntry))]
[JsonSerializable(typeof(RepositoryConfigurationRoot))]
public partial class JsonSourceGenerationContext : JsonSerializerContext
{
}

View File

@@ -1,6 +1,13 @@
using System.Text.Json;
using System.Text.Json.Serialization;
namespace Alma.Services;
public interface IConfigurationFileReader
{
public Task<(T? Result, string? FileName)> DeserializeAsync<T>(string fileNameWithoutExtension, string? extension = null) where T : class;
public Task<(T? Result, string? FileName)> DeserializeAsync<T>(
string fileNameWithoutExtension,
Func<JsonSerializerOptions, JsonSerializerContext> contextGenerator,
string? extension = null)
where T : class;
}