Add Json source generation
This commit is contained in:
@@ -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>())
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
14
src/Alma.Abstraction/JsonSourceGenerationContext.cs
Normal file
14
src/Alma.Abstraction/JsonSourceGenerationContext.cs
Normal 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
|
||||
{
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user