示例#1
0
        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);
        }
示例#2
0
        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);
        }