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"; }