Example #1
0
        public async Task RunLoop()
        {
            SetupActions();
            while (true)
            {
                Console.WriteLine();
                ConsoleHelpers.ConsoleInLine(Prompt, ConsoleColor.DarkYellow);
                var queryString = Console.ReadLine();
                if (queryString == "q")
                {
                    break;
                }

                var queryCommand = queryString.Split(' ').FirstOrDefault();
                var queryParam   = queryString.Replace($"{queryCommand} ", "").Trim();
                if (_actions.ContainsKey(queryCommand))
                {
                    try
                    {
                        await _actions[queryCommand].ExecuteAction(queryParam);
                    }
                    catch (Exception e)
                    {
                        ConsoleHelpers.ConsoleInLine($"Error:", ConsoleColor.DarkRed);
                        ConsoleHelpers.ConsoleLine(e.Message);
                    }
                }
                else
                {
                    ConsoleHelpers.ConsoleLine($"{Prompt} Unrecognized command '{queryCommand}'. Use ? or help for a list of available commands", ConsoleColor.DarkRed);
                }
            }
        }
Example #2
0
        public void SetupActions()
        {
            var allMethods = _executionContext.GetType().GetMethods(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);

            _actionsList = allMethods.Where(m => m.GetCustomAttribute <ConsoleActionTriggerAttribute>() != null).Select(m => new ConsoleAction(m, _executionContext)).ToList();
            _actionsList.Insert(0, new ConsoleAction(Help, "Displays this message", 0, "h", "help", "?"));

            _actions = _actionsList.SelectMany(ca => ca.Commands.Select(c => new KeyValuePair <string, ConsoleAction>(c, ca)))
                       .ToDictionary(k => k.Key, v => v.Value);

            ConsoleHelpers.ConsoleLine("Type '?' or 'help' for additional commands...", ConsoleColor.DarkGray);
        }