/// <summary> /// Runs the command with the given name using the given arguments. /// </summary> /// <param name="commandName">Name of the command.</param> /// <param name="arguments">Arguments of the command.</param> /// <param name="reportErrorsToConsole">True to print exceptions in the console. False to throw the exception.</param> public async Task RunCommand(string commandName, IEnumerable <string> arguments, bool reportErrorsToConsole = false, IFileSystem FileSystem = null) { var command = AllCommands.Where(c => String.Compare(c.Key, commandName, StringComparison.CurrentCultureIgnoreCase) == 0).Select(c => c.Value).SingleOrDefault(); if (FileSystem != null && CurrentPluginManager.CanCreateInstance(command.GetType())) { command = CurrentPluginManager.CreateNewInstance(command, FileSystem) as ConsoleCommand; } await RunCommand(command, arguments, reportErrorsToConsole); }
private bool ProcessGroup(string command) { var commandGroupStrings = Enum.GetNames(typeof(CommandGroup)).ToList().Select(g => g.ToLower()); if (!commandGroupStrings.Contains(command.ToLower())) { return(false); } List <CommandBase> toExecute; List <CommandBase> toExclude = new List <CommandBase>(); foreach (var remainingCommand in Commands) { if (remainingCommand.StartsWith("-")) { var foundCommand = AllCommands.FirstOrDefault(c => c.Command.Equals(remainingCommand.Substring(1), StringComparison.InvariantCultureIgnoreCase)); if (foundCommand != null) { toExclude.Add(foundCommand); } } } switch (command.ToLower()) { case "all": toExecute = AllCommands.ToList(); break; default: CommandGroup commandGroup; try { var groupName = Enum.GetNames(typeof(CommandGroup)).FirstOrDefault(c => c.ToLower() == command.ToLower()); commandGroup = (CommandGroup)Enum.Parse(typeof(CommandGroup), groupName); } catch (ArgumentException) { return(false); } toExecute = AllCommands.Where(g => g.Group.Contains(commandGroup)).ToList(); break; } var commandsFiltered = toExecute.Where(c => !toExclude.Contains(c)).ToList(); commandsFiltered.ForEach(c => { ExecuteCommand(c, new string[] { }); }); return(true); }
private bool ProcessGroup(string command) { var commandGroupStrings = Enum.GetNames(typeof(CommandGroup)).ToList().Select(g => g.ToLower()); if (!commandGroupStrings.Contains(command.ToLower())) { return(false); } List <CommandBase> toExecute; switch (command.ToLower()) { case "all": toExecute = AllCommands; break; default: CommandGroup commandGroup; try { var groupName = Enum.GetNames(typeof(CommandGroup)).FirstOrDefault(c => c.ToLower() == command.ToLower()); commandGroup = (CommandGroup)Enum.Parse(typeof(CommandGroup), groupName); } catch (ArgumentException) { return(false); } toExecute = AllCommands.Where(g => g.Group.Contains(commandGroup)).ToList(); break; } toExecute.ForEach(c => { ExecuteCommand(c, new string[] { }); }); return(true); }