about summary refs log tree commit diff
path: root/MatrixUtils.RoomUpgradeCLI/Commands/ExecuteCommand.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MatrixUtils.RoomUpgradeCLI/Commands/ExecuteCommand.cs')
-rw-r--r--MatrixUtils.RoomUpgradeCLI/Commands/ExecuteCommand.cs30
1 files changed, 27 insertions, 3 deletions
diff --git a/MatrixUtils.RoomUpgradeCLI/Commands/ExecuteCommand.cs b/MatrixUtils.RoomUpgradeCLI/Commands/ExecuteCommand.cs

index 5815a35..41c8cca 100644 --- a/MatrixUtils.RoomUpgradeCLI/Commands/ExecuteCommand.cs +++ b/MatrixUtils.RoomUpgradeCLI/Commands/ExecuteCommand.cs
@@ -1,6 +1,5 @@ using System.Text.Json; using System.Text.Json.Nodes; -using ArcaneLibs.Extensions; using LibMatrix.Helpers; using LibMatrix.Homeservers; @@ -18,14 +17,39 @@ public class ExecuteCommand(ILogger<ExecuteCommand> logger, IHost host, RuntimeC await PrintHelp(); } + if (Directory.Exists(filename)) { + await ExecuteDirectory(filename); + } + else if (File.Exists(filename)) { + await ExecuteFile(filename); + } + else { + Console.WriteLine($"File or directory {filename} does not exist."); + await PrintHelp(); + } + + await host.StopAsync(cancellationToken); + } + + public async Task ExecuteFile(string filename) { var rbj = await JsonSerializer.DeserializeAsync<JsonObject>(File.OpenRead(filename)); var rb = rbj.ContainsKey(nameof(RoomUpgradeBuilder.OldRoomId)) ? rbj.Deserialize<RoomUpgradeBuilder>() : rbj.Deserialize<RoomBuilder>(); Console.WriteLine($"Executing room builder file of type {rb.GetType().Name}..."); await rb!.Create(hs); - - await host.StopAsync(cancellationToken); + } + + public async Task ExecuteDirectory(string dirName) { + if (!Directory.Exists(dirName)) { + Console.WriteLine($"Directory {dirName} does not exist."); + return; + } + var files = Directory.GetFiles(dirName, "*.json"); + foreach (var file in files) { + Console.WriteLine($"Executing file: {file}"); + await ExecuteFile(file); + } } public async Task StopAsync(CancellationToken cancellationToken) { }