41 lines
1.1 KiB
C#
41 lines
1.1 KiB
C#
using System.Text.Json;
|
|
|
|
namespace HanaToolbox.Config;
|
|
|
|
public sealed class ConfigService
|
|
{
|
|
private const string ConfigDir = "/etc/hanatoolbox";
|
|
private const string ConfigFile = "/etc/hanatoolbox/hanatoolbox.json";
|
|
|
|
public static AppConfig Load()
|
|
{
|
|
if (!File.Exists(ConfigFile))
|
|
return new AppConfig();
|
|
|
|
try
|
|
{
|
|
var json = File.ReadAllText(ConfigFile);
|
|
return JsonSerializer.Deserialize(json, AppConfigJsonContext.Default.AppConfig)
|
|
?? new AppConfig();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new InvalidOperationException(
|
|
$"Failed to load config from {ConfigFile}: {ex.Message}", ex);
|
|
}
|
|
}
|
|
|
|
public static void Save(AppConfig config)
|
|
{
|
|
Directory.CreateDirectory(ConfigDir);
|
|
Directory.CreateDirectory(StateDirectory);
|
|
|
|
var json = JsonSerializer.Serialize(config, AppConfigJsonContext.Default.AppConfig);
|
|
File.WriteAllText(ConfigFile, json);
|
|
}
|
|
|
|
public static bool Exists() => File.Exists(ConfigFile);
|
|
|
|
public static string StateDirectory => "/etc/hanatoolbox/state";
|
|
}
|