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 ProcessCommand(string commandLine) { var args = Shell32.CommandLineToArgs(commandLine); var commandName = args[0]; var command = AllCommands.FirstOrDefault(c => c.Command.Equals(commandName, StringComparison.InvariantCultureIgnoreCase)); if (command == null) { return(false); } var commandArgs = new string[] { }; if (args.Length > 1) { commandArgs = args.SubArray(1, args.Length - 1); } ExecuteCommand(command, commandArgs); return(true); }