PackagePhysicalFileMetadata?AttemptToGetPackageFromCache(string packageId, IVersion version, string cacheDirectory) { Log.VerboseFormat("Checking package cache for package {0} v{1}", packageId, version.ToString()); var files = fileSystem.EnumerateFilesRecursively(cacheDirectory, PackageName.ToSearchPatterns(packageId, version, new[] { ".nupkg" })); foreach (var file in files) { var package = PackageName.FromFile(file); if (package == null) { continue; } var idMatches = string.Equals(package.PackageId, packageId, StringComparison.OrdinalIgnoreCase); var versionExactMatch = string.Equals(package.Version.ToString(), version.ToString(), StringComparison.OrdinalIgnoreCase); var nugetVerMatches = package.Version.Equals(version); if (idMatches && (nugetVerMatches || versionExactMatch)) { return(PackagePhysicalFileMetadata.Build(file, package)); } } return(null); }
public void ExtractToApplicationDirectory(PathToPackage pathToPackage, IPackageExtractor?customPackageExtractor = null) { var metadata = PackageName.FromFile(pathToPackage); var targetPath = ApplicationDirectory.GetApplicationDirectory(metadata, variables, fileSystem); Extract(pathToPackage, targetPath, PackageVariables.Output.InstallationDirectoryPath, customPackageExtractor); }
public IPackageExtractor GetExtractor(string packageFile) { var extension = Path.GetExtension(packageFile); if (string.IsNullOrEmpty(extension)) { throw new CommandException("Package is missing file extension. This is needed to select the correct extraction algorithm."); } var file = PackageName.FromFile(packageFile); var extractor = extractors.FirstOrDefault(p => p.Extensions.Any(ext => file.Extension.Equals(ext, StringComparison.OrdinalIgnoreCase))); if (extractor == null) { throw new CommandException($"Unsupported file extension `{extension}`"); } return(extractor); }
public static PackagePhysicalFileMetadata?Build(string fullFilePath) { return(Build(fullFilePath, PackageName.FromFile(fullFilePath))); }