/// <summary> /// Запустить контроллер. /// </summary> /// <param name="args">Аргументы командной строки.</param> public void Run(string[] args) { var commandCodes = new Queue <string>(Array.IndexOf(args, "-CommandCodes") is var index && index >= 0 ? args.ElementAtOrDefault(index + 1)?.Split(',') ?? Enumerable.Empty <string>() : Enumerable.Empty <string>()); while (true) { var commands = GetCommands(); PrintAvailableCommands(commands); Console.Write(">"); var commandCode = commandCodes.Any() ? commandCodes.Dequeue() : UserInput.ReadLine(); if (commands.TryGetValue(commandCode, out var command)) { var commandAction = command.Item1; if (commandAction == null) { UserInput.Information("Выход"); return; } try { commandAction(); var commanTitle = command.Item2; UserInput.Success($"Команда \"{commanTitle}\" выполнена"); } catch (InputCanceledException) { UserInput.Warning("Команда прервана"); } catch (Exception ex) { var message = "При выполнении команды произошла неожиданная ошибка"; LogError(message, ex); UserInput.Error(message); UserInput.Error(ex.ToString()); } } else { UserInput.Error($"Неправильно указано имя команды \"{commandCode}\""); } } }
/// <summary> /// Запустить контроллер. /// </summary> public void Run() { while (true) { var commands = GetCommands(); PrintAvailableCommands(commands); Console.Write(">"); var commandName = UserInput.ReadLine(); if (commands.TryGetValue(commandName, out var command)) { var commandAction = command.Item1; if (commandAction == null) { UserInput.Information("Выход"); return; } try { commandAction(); var commanTitle = command.Item2; UserInput.Success($"Команда \"{commanTitle}\" выполнена"); } catch (InputCanceledException) { UserInput.Warning("Команда прервана"); } catch (Exception ex) { var message = "При выполнении команды произошла неожиданная ошибка"; LogError(message, ex); UserInput.Error(message); UserInput.Error(ex.ToString()); } } else { UserInput.Error($"Неправильно указано имя команды \"{commandName}\""); } } }