first commit
This commit is contained in:
40
Config/ConfigService.cs
Normal file
40
Config/ConfigService.cs
Normal 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";
|
||||
}
|
||||
Reference in New Issue
Block a user