コード例 #1
0
        /// <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);
        }
コード例 #2
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);
        }
コード例 #3
0
ファイル: Runtime.cs プロジェクト: zeynepg0/Seatbelt
        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);
        }