using System; using System.Collections.Generic; using System.Text; namespace RecrownedAthenaeum.Tools.CommandProcessor.Commands { internal class HelpCommand : EngineCommand { CommandEngine commandEngine; public HelpCommand(CommandEngine commandEngine) : base("help") { this.commandEngine = commandEngine; help = "help [command] [arg]"; } public override void Run(string[] arguments) { if (arguments != null) { if (commandEngine.ContainsCommand(arguments[0])) { if (arguments.Length < 2) ConsoleUtilities.WriteWrappedLine(commandEngine.GetCommand(arguments[0]).Help(null)); for (int i = 1; i < arguments.Length; i++) { ConsoleUtilities.WriteWrappedLine(commandEngine.GetCommand(arguments[0]).Help(arguments[i])); } } else { throw new ArgumentException(arguments[0] + " not a command. Type \"help\" for a list of commands."); } } else { ConsoleUtilities.WriteWrappedLine("Tools for RecrownedAthenaeum library. Possible commands are as follows:\n"); foreach (EngineCommand engineCommand in commandEngine.commands) { for (int i = 0; i < engineCommand.InvokeStrings.Length; i++) { ConsoleUtilities.WriteWrapped(engineCommand.InvokeStrings[i]); if (i + 1 < engineCommand.InvokeStrings.Length) { ConsoleUtilities.WriteWrapped(", "); } } ConsoleUtilities.WriteWrapped(" : "); ConsoleUtilities.WriteWrapped(engineCommand.Help().Replace("\n", "\n\t"), true); Console.WriteLine("--------"); } } } } }