/// <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); }
/// <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)); } }