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; } } }
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); } }