public void GivenNugetConfigInstallSucceedsInTransaction(bool testMockBehaviorIsInSync) { var nugetConfigPath = WriteNugetConfigFileToPointToTheFeed(); var(store, installer, reporter, fileSystem) = Setup( useMock: testMockBehaviorIsInSync, feeds: GetMockFeedsForConfigFile(nugetConfigPath)); IToolPackage package = null; using (var transactionScope = new TransactionScope( TransactionScopeOption.Required, TimeSpan.Zero)) { package = installer.InstallPackage( packageId: TestPackageId, versionRange: VersionRange.Parse(TestPackageVersion), targetFramework: _testTargetframework, nugetConfig: nugetConfigPath); transactionScope.Complete(); } AssertPackageInstall(reporter, fileSystem, package, store); package.Uninstall(); }
public override int Execute() { var global = _options.ValueOrDefault <bool>("global"); var toolPath = _options.SingleArgumentOrDefault("tool-path"); if (string.IsNullOrWhiteSpace(toolPath) && !global) { throw new GracefulException(LocalizableStrings.UninstallToolCommandNeedGlobalOrToolPath); } if (!string.IsNullOrWhiteSpace(toolPath) && global) { throw new GracefulException(LocalizableStrings.UninstallToolCommandInvalidGlobalAndToolPath); } DirectoryPath?toolDirectoryPath = null; if (!string.IsNullOrWhiteSpace(toolPath)) { toolDirectoryPath = new DirectoryPath(toolPath); } IToolPackageStore toolPackageStore = _createToolPackageStoreAndInstaller(toolDirectoryPath); IShellShimRepository shellShimRepository = _createShellShimRepository(toolDirectoryPath); var packageId = new PackageId(_options.Arguments.Single()); IToolPackage package = null; try { package = toolPackageStore.EnumeratePackageVersions(packageId).SingleOrDefault(); if (package == null) { throw new GracefulException( messages: new[] { string.Format( LocalizableStrings.ToolNotInstalled, packageId), }, isUserError: false); } } catch (InvalidOperationException) { throw new GracefulException( messages: new[] { string.Format( LocalizableStrings.ToolHasMultipleVersionsInstalled, packageId), }, isUserError: false); } try { using (var scope = new TransactionScope( TransactionScopeOption.Required, TimeSpan.Zero)) { foreach (var command in package.Commands) { shellShimRepository.RemoveShim(command.Name); } package.Uninstall(); scope.Complete(); } _reporter.WriteLine( string.Format( LocalizableStrings.UninstallSucceeded, package.Id, package.Version.ToNormalizedString()).Green()); return(0); } catch (ToolPackageException ex) { throw new GracefulException( messages: new[] { ex.Message }, verboseMessages: new[] { ex.ToString() }, isUserError: false); } catch (Exception ex) when(ex is ToolConfigurationException || ex is ShellShimException) { throw new GracefulException( messages: new[] { string.Format( LocalizableStrings.FailedToUninstallTool, packageId, ex.Message) }, verboseMessages: new[] { ex.ToString() }, isUserError: false); } }
public override int Execute() { if (!_options.ValueOrDefault <bool>("global")) { throw new GracefulException(LocalizableStrings.UninstallToolCommandOnlySupportsGlobal); } var packageId = _options.Arguments.Single(); IToolPackage package = null; try { package = _toolPackageStore.GetInstalledPackages(packageId).SingleOrDefault(); if (package == null) { _errorReporter.WriteLine( string.Format( LocalizableStrings.ToolNotInstalled, packageId).Red()); return(1); } } catch (InvalidOperationException) { _errorReporter.WriteLine( string.Format( LocalizableStrings.ToolHasMultipleVersionsInstalled, packageId).Red()); return(1); } try { using (var scope = new TransactionScope( TransactionScopeOption.Required, TimeSpan.Zero)) { foreach (var command in package.Commands) { _shellShimRepository.RemoveShim(command.Name); } package.Uninstall(); scope.Complete(); } _reporter.WriteLine( string.Format( LocalizableStrings.UninstallSucceeded, package.PackageId, package.PackageVersion).Green()); return(0); } catch (ToolPackageException ex) { if (Reporter.IsVerbose) { Reporter.Verbose.WriteLine(ex.ToString().Red()); } _errorReporter.WriteLine(ex.Message.Red()); return(1); } catch (Exception ex) when(ex is ToolConfigurationException || ex is ShellShimException) { if (Reporter.IsVerbose) { Reporter.Verbose.WriteLine(ex.ToString().Red()); } _errorReporter.WriteLine( string.Format( LocalizableStrings.FailedToUninstallTool, packageId, ex.Message).Red()); return(1); } }