public IToolPackage Install(FilePath manifestFile) { if (!string.IsNullOrEmpty(_configFilePath) && !File.Exists(_configFilePath)) { throw new GracefulException( string.Format( LocalizableStrings.NuGetConfigurationFileDoesNotExist, Path.GetFullPath(_configFilePath))); } VersionRange versionRange = null; if (!string.IsNullOrEmpty(_packageVersion) && !VersionRange.TryParse(_packageVersion, out versionRange)) { throw new GracefulException( string.Format( LocalizableStrings.InvalidNuGetVersionRange, _packageVersion)); } FilePath?configFile = null; if (!string.IsNullOrEmpty(_configFilePath)) { configFile = new FilePath(_configFilePath); } try { IToolPackage toolDownloadedPackage = _toolPackageInstaller.InstallPackageToExternalManagedLocation( new PackageLocation( nugetConfig: configFile, additionalFeeds: _sources, rootConfigDirectory: manifestFile.GetDirectoryPath()), _packageId, versionRange, TargetFrameworkToInstall, verbosity: _verbosity); return(toolDownloadedPackage); } catch (Exception ex) when(InstallToolCommandLowLevelErrorConverter.ShouldConvertToUserFacingError(ex)) { throw new GracefulException( messages: InstallToolCommandLowLevelErrorConverter.GetUserFacingMessages(ex, _packageId), verboseMessages: new[] { ex.ToString() }, isUserError: false); } }
public override int Execute() { if (_configFilePath != null && !File.Exists(_configFilePath)) { throw new GracefulException( string.Format( LocalizableStrings.NuGetConfigurationFileDoesNotExist, Path.GetFullPath(_configFilePath))); } VersionRange versionRange = null; if (!string.IsNullOrEmpty(_packageVersion) && !VersionRange.TryParse(_packageVersion, out versionRange)) { throw new GracefulException( string.Format( LocalizableStrings.InvalidNuGetVersionRange, _packageVersion)); } FilePath?configFile = null; if (_configFilePath != null) { configFile = new FilePath(_configFilePath); } string targetFramework = BundledTargetFramework.GetTargetFrameworkMoniker(); try { FilePath manifestFile = GetManifestFilePath(); IToolPackage toolDownloadedPackage = _toolPackageInstaller.InstallPackageToExternalManagedLocation( new PackageLocation( nugetConfig: configFile, additionalFeeds: _sources, rootConfigDirectory: manifestFile.GetDirectoryPath()), _packageId, versionRange, targetFramework, verbosity: _verbosity); _toolManifestEditor.Add( manifestFile, toolDownloadedPackage.Id, toolDownloadedPackage.Version, toolDownloadedPackage.Commands.Select(c => c.Name).ToArray()); foreach (var restoredCommand in toolDownloadedPackage.Commands) { _localToolsResolverCache.Save( new Dictionary <RestoredCommandIdentifier, RestoredCommand> { [new RestoredCommandIdentifier( toolDownloadedPackage.Id, toolDownloadedPackage.Version, NuGetFramework.Parse(targetFramework), Constants.AnyRid, restoredCommand.Name)] = restoredCommand }); } _reporter.WriteLine( string.Format( LocalizableStrings.LocalToolInstallationSucceeded, string.Join(", ", toolDownloadedPackage.Commands.Select(c => c.Name)), toolDownloadedPackage.Id, toolDownloadedPackage.Version.ToNormalizedString(), manifestFile.Value).Green()); return(0); } catch (Exception ex) when(InstallToolCommandLowLevelErrorConverter.ShouldConvertToUserFacingError(ex)) { throw new GracefulException( messages: InstallToolCommandLowLevelErrorConverter.GetUserFacingMessages(ex, _packageId), verboseMessages: new[] { ex.ToString() }, isUserError: false); } }