feat: add app settings manager to do the reading and writing

This commit is contained in:
Stevan Freeborn
2025-03-14 22:02:22 -05:00
parent e9b9f7fc13
commit 414e712f51
14 changed files with 229 additions and 214 deletions
@@ -1,25 +1,23 @@
namespace AltGen.Console.Config;
sealed class ListConfigCommand(IAnsiConsole console, IFileSystem fileSystem) : AsyncCommand
sealed class ListConfigCommand(
IAnsiConsole console,
IAppSettingsManager settingsManager
) : AsyncCommand
{
readonly IAnsiConsole _console = console;
readonly IFileSystem _fileSystem = fileSystem;
readonly IAppSettingsManager _settingsManager = settingsManager;
public override async Task<int> ExecuteAsync(CommandContext context)
{
var settingsPath = _fileSystem.Path.Combine(AppContext.BaseDirectory, AppSettings.SettingsFileName);
var settingsExist = _fileSystem.File.Exists(settingsPath);
if (settingsExist is false)
if (_settingsManager.AppSettingsExist() is false)
{
_console.MarkupLine("No settings found.");
return 0;
}
var settingsJson = await _fileSystem.File.ReadAllTextAsync(settingsPath);
var appSettings = JsonSerializer.Deserialize<AppSettings>(settingsJson, JsonOptions.Default)
?? throw new ConfigException("Failed to deserialize settings.");
var appSettings = await _settingsManager.GetAppSettingsAsync();
foreach (var provider in appSettings.Providers)
{