This commit is contained in:
2022-11-01 15:01:20 +01:00
parent e379f8b83f
commit aa61ef3ce1
33 changed files with 890 additions and 0 deletions

View File

@@ -0,0 +1,35 @@
using Alma.Configuration.Module;
namespace Alma.Services;
public class ModuleConfigurationResolver : IModuleConfigurationResolver
{
private readonly IConfigurationFileReader _configurationFileReader;
private readonly IOsInformation _osInformation;
public ModuleConfigurationResolver(
IConfigurationFileReader configurationFileReader,
IOsInformation osInformation)
{
_configurationFileReader = configurationFileReader;
_osInformation = osInformation;
}
public async Task<(ModuleConfiguration? mergedModuleConfig, string? moduleConfigFileName)> ResolveModuleConfiguration(string moduleConfigStub)
{
var (moduleConfigRoot, moduleConfigFileName) = await _configurationFileReader.DeserializeAsync<ModuleConfigurationRoot>(moduleConfigStub);
if (moduleConfigRoot is null) return (null, null);
var validModuleConfigurations = moduleConfigRoot.Where(m => _osInformation.IsOnPlatform(m.Key));
//TODO: priority order
var orderedValidModuleConfigurations = new Dictionary<string, ModuleConfiguration>(validModuleConfigurations);
var mergedModuleConfig = orderedValidModuleConfigurations
.Select(m => m.Value)
.Aggregate((a, b) => a.Merge(b));
return (mergedModuleConfig, moduleConfigFileName);
}
}