Exemplo n.º 1
0
        /// <inheritdoc />
        public override int Execute(UtilityCommandContext context, Arguments arguments)
        {
            context.ProgressMonitorProvider.Run(progressMonitor =>
            {
                List <string> installerIds = arguments.InstallerIds.Length != 0
                    ? new List <string>(arguments.InstallerIds)
                    : null;

                if (arguments.Install)
                {
                    installerManager.Install(installerIds, null, progressMonitor);
                }
                else
                {
                    installerManager.Uninstall(installerIds, null, progressMonitor);
                }
            });

            return(0);
        }
Exemplo n.º 2
0
        /// <inheritdoc />
        protected override int RunImpl(string[] args)
        {
            ShowBanner();
            InstallCancelHandler();

            if (!ParseArguments(args) || Arguments.CommandAndArguments.Length == 0)
            {
                ShowHelp();
                return(Arguments.Help ? 0 : 1);
            }

            ILogger logger = CreateLogger();
            IProgressMonitorProvider progressMonitorProvider = Arguments.NoProgress
                ? (IProgressMonitorProvider)NullProgressMonitorProvider.Instance
                : new RichConsoleProgressMonitorProvider(Console);

            string commandName = Arguments.CommandAndArguments[0];

            string[] commandRawArguments = new string[Arguments.CommandAndArguments.Length - 1];
            Array.Copy(Arguments.CommandAndArguments, 1, commandRawArguments, 0, commandRawArguments.Length);
            IUtilityCommand command          = GetSpecialCommand(commandName);
            bool            isSpecialCommand = command != null;
            var             runtimeSetup     = new RuntimeSetup();

            GenericCollectionUtils.ForEach(Arguments.PluginDirectories, x => runtimeSetup.AddPluginDirectory(x));

            using (isSpecialCommand ? null : RuntimeBootstrap.Initialize(runtimeSetup, logger))
            {
                if (command == null)
                {
                    var commandManager = RuntimeAccessor.ServiceLocator.Resolve <IUtilityCommandManager>();
                    command = commandManager.GetCommand(commandName);

                    if (command == null)
                    {
                        ShowErrorMessage(string.Format("Unrecognized utility command name: '{0}'.", commandName));
                        ShowHelp();
                        return(1);
                    }
                }

                Type commandArgumentsClass = command.GetArgumentClass();
                var  commandArgumentParser = new CommandLineArgumentParser(commandArgumentsClass, null);

                if (Arguments.Help)
                {
                    ShowHelpForParticularCommand(commandName, commandArgumentParser);
                    return(0);
                }

                object commandArguments = Activator.CreateInstance(commandArgumentsClass);

                if (!commandArgumentParser.Parse(commandRawArguments, commandArguments, ShowErrorMessage) || !command.ValidateArguments(commandArguments, ShowErrorMessage))
                {
                    ShowHelpForParticularCommand(commandName, commandArgumentParser);
                    return(1);
                }

                var commandContext = new UtilityCommandContext(commandArguments, Console, logger, progressMonitorProvider, Arguments.Verbosity);
                return(command.Execute(commandContext));
            }
        }