first commit

This commit is contained in:
2026-03-02 20:53:28 +01:00
commit d27c205106
63 changed files with 4593 additions and 0 deletions

40
Config/ConfigService.cs Normal file
View File

@@ -0,0 +1,40 @@
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";
}