private void AttemptToGetPackageFromCache(string packageId, SemanticVersion version, string feedId, string cacheDirectory, out IPackage downloaded, out string downloadedTo) { downloaded = null; downloadedTo = null; Log.VerboseFormat("Checking package cache for package {0} {1}", packageId, version.ToString()); var name = GetNameOfPackage(packageId, version.ToString()); fileSystem.EnsureDirectoryExists(cacheDirectory); var files = fileSystem.EnumerateFilesRecursively(cacheDirectory, name + "*.nupkg"); foreach (var file in files) { var package = ReadPackageFile(file); if (package == null) { continue; } if (!string.Equals(package.Id, packageId, StringComparison.OrdinalIgnoreCase) || !string.Equals(package.Version.ToString(), version.ToString(), StringComparison.OrdinalIgnoreCase)) { continue; } downloaded = package; downloadedTo = file; } }
private void AttemptToGetPackageFromCache(string packageId, NuGetVersion version, string cacheDirectory, out LocalNuGetPackage downloaded, out string downloadedTo) { downloaded = null; downloadedTo = null; Log.VerboseFormat("Checking package cache for package {0} {1}", packageId, version.ToString()); var name = GetNameOfPackage(packageId, version.ToString()); fileSystem.EnsureDirectoryExists(cacheDirectory); var files = fileSystem.EnumerateFilesRecursively(cacheDirectory, name + "*.nupkg"); foreach (var file in files) { var package = ReadPackageFile(file); if (package == null) continue; var idMatches = string.Equals(package.Metadata.Id, packageId, StringComparison.OrdinalIgnoreCase); var versionExactMatch = string.Equals(package.Metadata.Version.ToString(), version.ToString(), StringComparison.OrdinalIgnoreCase); #if USE_NUGET_V2_LIBS var nugetVerMatches = NuGetVersion.TryParse(package.Metadata.Version, out NuGetVersion packageVersion) && VersionComparer.Default.Equals(version, packageVersion); #else var nugetVerMatches = package.Metadata.Version.Equals(version); #endif if (idMatches && (nugetVerMatches || versionExactMatch)) { downloaded = package; downloadedTo = file; return; } } }
public PackagePhysicalFileMetadata DownloadPackage( string packageId, IVersion version, string feedId, Uri feedUri, ICredentials feedCredentials, bool forcePackageDownload, int maxDownloadAttempts, TimeSpan downloadAttemptBackoff) { var cacheDirectory = PackageDownloaderUtils.GetPackageRoot(feedId); fileSystem.EnsureDirectoryExists(cacheDirectory); if (!forcePackageDownload) { var downloaded = SourceFromCache(packageId, version, cacheDirectory); if (downloaded != null) { Log.VerboseFormat("Package was found in cache. No need to download. Using file: '{0}'", downloaded.FullFilePath); return(downloaded); } } return(DownloadPackage(packageId, version, feedUri, feedCredentials, cacheDirectory, maxDownloadAttempts, downloadAttemptBackoff)); }
private void AttemptToGetPackageFromCache(string packageId, IVersion version, string cacheDirectory, out LocalNuGetPackage downloaded, out string downloadedTo) { downloaded = null; downloadedTo = null; Log.VerboseFormat("Checking package cache for package {0} {1}", packageId, version.ToString()); var name = GetNameOfPackage(packageId, version.ToString()); fileSystem.EnsureDirectoryExists(cacheDirectory); var files = fileSystem.EnumerateFilesRecursively(cacheDirectory, name + "*.nupkg"); foreach (var file in files) { var package = ReadPackageFile(file); if (package == null) { continue; } var idMatches = string.Equals(package.Metadata.Id, packageId, StringComparison.OrdinalIgnoreCase); var versionExactMatch = string.Equals(package.Metadata.Version.ToString(), version.ToString(), StringComparison.OrdinalIgnoreCase); var packageMetadata = new MetadataFactory().GetMetadataFromPackageID(packageId); var nugetVerMatches = VersionFactory.TryCreateVersion(package.Metadata.Version.ToString(), out IVersion packageVersion, packageMetadata.VersionFormat) && version.Equals(packageVersion); if (idMatches && (nugetVerMatches || versionExactMatch)) { downloaded = package; downloadedTo = file; return; } } }
public void LongFilePathsShouldWork() { var paths = new Stack <string>(); var path = rootPath; for (var i = 0; i <= 15; i++) { path += @"\ZZZZabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"; fileSystem.EnsureDirectoryExists(path); paths.Push(path); } fileSystem.OverwriteFile("Some sample text", path + @"\test.txt"); fileSystem.DeleteFile(path + @"\test.txt"); while (paths.Any()) { var pathToRemove = paths.Pop(); fileSystem.DeleteDirectory(pathToRemove); } }