Beispiel #1
0
        public void CmdLoop(CmdConsole con)
        {
            int lastStatusCode = 0;

            while (true)
            {
                string cmdline;
                if (lastStatusCode != 0)
                {
                    con.PromptColor32 = Color32.FromConsoleColor(ConsoleColor.Red);
                    cmdline           = con.ReadLine("(" + lastStatusCode + ")" + Prompt);
                    con.PromptColor32 = Color32.FromConsoleColor(ConsoleColor.Green);
                }
                else
                {
                    cmdline = con.ReadLine(Prompt);
                }

                if (cmdline != null)
                {
                    if (cmdline?.Length == 0)
                    {
                        lastStatusCode = 0;
                        continue;
                    }
                    if (cmdline == "exit")
                    {
                        con.WriteLine("exiting command loop.");
                        break;
                    }
                    var cmd = Command.FromCmdline(cmdline);
                    HandleCommand(con, cmd);
                    lastStatusCode = cmd.statusCode;
                    con.WriteLine("");
                }
                else
                {
                    con.WriteLine("EOF, exiting command loop.");
                    break;
                }
            }
        }
Beispiel #2
0
        public void HandleCommand(CmdConsole con, Command cmd)
        {
            if (con == null)
            {
                throw new ArgumentNullException(nameof(con));
            }
            if (cmd == null)
            {
                throw new ArgumentNullException(nameof(cmd));
            }

            var handler = getHandler(cmd);

            if (handler != null)
            {
                con.RunCommand(cmd, handler);
            }
            else
            {
                cmd.statusCode = -1;
                con.Write($"Command '{cmd.name}' Not Found\n", ConsoleColor.Red);
            }
        }