Added app configuration

This commit is contained in:
dan_clark@outlook.com
2022-03-27 19:35:25 +01:00
parent 40d8caf1e0
commit 5ba1e5a63b
17 changed files with 358 additions and 87 deletions
@@ -0,0 +1,37 @@
using Microsoft.Extensions.Configuration.Json;
using Microsoft.Extensions.FileProviders;
namespace TheXamlGuy.TaskbarGroup.Core
{
public class WritableJsonConfigurationProvider : JsonConfigurationProvider
{
private readonly WritableJsonConfigurationFile writableJsonConfigurationFile;
public WritableJsonConfigurationProvider(JsonConfigurationSource source) : base(source)
{
writableJsonConfigurationFile = new WritableJsonConfigurationFile();
}
public override void Load(Stream stream)
{
Data = writableJsonConfigurationFile.Parse(stream);
}
public override void Set(string key, string value)
{
var file = Source.FileProvider?.GetFileInfo(Source.Path ?? string.Empty);
static Stream OpenRead(IFileInfo fileInfo)
{
if (fileInfo.PhysicalPath is not null)
{
return new FileStream(fileInfo.PhysicalPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
}
return fileInfo.CreateReadStream();
}
using Stream stream = OpenRead(file);
writableJsonConfigurationFile.Write(key, value, stream);
}
}
}