1
0
Files
Toak/Configuration/ConfigManager.cs

48 lines
1.2 KiB
C#

using System.Text.Json;
using System.Text.Json.Serialization;
using Toak.Serialization;
using Toak.Core.Interfaces;
namespace Toak.Configuration;
public class ConfigManager : IConfigProvider
{
private readonly string ConfigDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".config", "toak");
private readonly string ConfigPath;
public ConfigManager()
{
ConfigPath = Path.Combine(ConfigDir, "config.json");
}
public ToakConfig LoadConfig()
{
if (!File.Exists(ConfigPath))
{
return new ToakConfig();
}
try
{
var json = File.ReadAllText(ConfigPath);
return JsonSerializer.Deserialize(json, AppJsonSerializerContext.Default.ToakConfig) ?? new ToakConfig();
}
catch (Exception)
{
return new ToakConfig();
}
}
public void SaveConfig(ToakConfig config)
{
if (!Directory.Exists(ConfigDir))
{
Directory.CreateDirectory(ConfigDir);
}
var json = JsonSerializer.Serialize(config, AppJsonSerializerContext.Default.ToakConfig);
File.WriteAllText(ConfigPath, json);
}
}