diff --git a/csharp/FileManager/Program.cs b/csharp/FileManager/Program.cs index 5b620c94..aad4e681 100644 --- a/csharp/FileManager/Program.cs +++ b/csharp/FileManager/Program.cs @@ -22,14 +22,13 @@ internal class Program /// /// /// - public static List> Handlers = new() + public static readonly List> Handlers = new() { new CreateTrigger(), new DeleteTrigger(), new HelpTrigger(), new LinksPrinterTrigger(), new ShowTrigger(), - new HelpTrigger(), new CreateFileSetTrigger(), new GetFilesByFileSetNameTrigger() }; @@ -37,18 +36,31 @@ private static async Task Main(string[] args) { using ConsoleCancellation cancellation = new(); var dbContext = new FileStorage(ConsoleHelpers.GetOrReadArgument(0, "Database file name", args)); - new HelpTrigger().Action(new Context { FileStorage = dbContext, Args = args }); + await new HelpTrigger().Action(new Context { FileStorage = dbContext, Args = args }); try { while (!cancellation.Token.IsCancellationRequested) { var input = Console.ReadLine(); - var Context = new Context { FileStorage = dbContext, Args = input.Split() }; + if (string.IsNullOrWhiteSpace(input)) + { + continue; + } + + var context = new Context { FileStorage = dbContext, Args = input.Split() }; foreach (var handler in Handlers) { - if (await handler.Condition(Context)) + try + { + if (await handler.Condition(context)) + { + await handler.Action(context); + break; + } + } + catch (Exception ex) { - handler.Action(Context); + Console.WriteLine($"Error processing handler {handler.GetType().Name}: {ex.Message}"); } } }