/// <summary> /// Attempt to find a package id and version in the local cache /// </summary> /// <param name="packageId">The desired package id</param> /// <param name="version">The desired version</param> /// <param name="cacheDirectory">The location of cached files</param> /// <returns>The path to a cached version of the file, or null if none are found</returns> PackagePhysicalFileMetadata?SourceFromCache(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, JarPackageExtractor.SupportedExtensions)); 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 async Task <FileInfo> PackageArchive(string sourceDirectory, string targetDirectory) { var cmdLineRunner = new CommandLineRunner(Log, Variables); var jarTool = new JarTool(cmdLineRunner, Log, Variables); var packageMetadata = PackageName.FromFile(Deployment.PackageFilePath); var customPackageFileName = Variables.Get(PackageVariables.CustomPackageFileName); if (!string.IsNullOrWhiteSpace(customPackageFileName)) { Log.Verbose($"Using custom package file-name: '{customPackageFileName}'"); } var targetFilePath = Path.Combine(targetDirectory, customPackageFileName ?? Path.GetFileName(Deployment.PackageFilePath)); var enableCompression = Variables.GetFlag(PackageVariables.JavaArchiveCompression, true); await Task.Run(() => { jarTool.CreateJar(sourceDirectory, targetFilePath, enableCompression); }); return(new FileInfo(targetFilePath)); }
protected string CreateArchive(RunningDeployment deployment) { var packageMetadata = PackageName.FromFile(deployment.PackageFilePath); var applicationDirectory = ApplicationDirectory.GetApplicationDirectory( packageMetadata, deployment.Variables, fileSystem); var customPackageFileName = deployment.Variables.Get(PackageVariables.CustomPackageFileName); if (!string.IsNullOrWhiteSpace(customPackageFileName)) { Log.Verbose($"Using custom package file-name: '{customPackageFileName}'"); } var targetFilePath = Path.Combine(applicationDirectory, customPackageFileName ?? Path.GetFileName(deployment.PackageFilePath)); var stagingDirectory = deployment.CurrentDirectory; var enableCompression = deployment.Variables.GetFlag(PackageVariables.JavaArchiveCompression, true); jarTool.CreateJar(stagingDirectory, targetFilePath, enableCompression); log.Info($"Re-packaging archive: '{targetFilePath}'"); return(targetFilePath); }
public void ExtractToApplicationDirectory(PathToPackage pathToPackage, IPackageExtractor customPackageExtractor = null) { var metadata = PackageName.FromFile(pathToPackage); var targetPath = ApplicationDirectory.GetApplicationDirectory(metadata, variables, fileSystem); Extract(pathToPackage, targetPath, customPackageExtractor); }
public void FromFile_OldSchoolFileType() { var details = PackageName.FromFile("blah/MyPackage.1.0.8-cat+jat.jar"); Assert.AreEqual("MyPackage", details.PackageId); Assert.AreEqual(VersionFactory.CreateSemanticVersion("1.0.8-cat+jat"), details.Version); Assert.AreEqual(".jar", details.Extension); }
public void FromFile_MavenVersion() { var details = PackageName.FromFile("blah/[email protected]%[email protected]"); Assert.AreEqual("pkg", details.PackageId); Assert.AreEqual(VersionFactory.CreateMavenVersion("1.0.0+CAT"), details.Version); Assert.AreEqual(".jar", details.Extension); }
public void FromFile_EncodedCharacters() { var details = PackageName.FromFile("blah/My%[email protected][email protected]"); Assert.AreEqual("My/Package", details.PackageId); Assert.AreEqual(new SemanticVersion("1.0.0+CAT"), details.Version); Assert.AreEqual(".zip", details.Extension); }
public void FromFile_SimpleConversion() { var details = PackageName.FromFile("blah/[email protected]@XXXYYYZZZ.zip"); Assert.AreEqual("MyPackage", details.PackageId); Assert.AreEqual(new SemanticVersion("1.0.0"), details.Version); Assert.AreEqual(".zip", details.Extension); }
public void FromFile(string filename, string extension, string packageId, IVersion version) { var details = PackageName.FromFile($"blah/{filename}"); Assert.AreEqual(packageId, details.PackageId); Assert.AreEqual(version, details.Version); Assert.AreEqual(extension, details.Extension); }
PackageFileNameMetadata?PackageMetadata(string file) { try { return(PackageName.FromFile(file)); } catch (Exception) { Log.Verbose($"Could not extract metadata for {file}. This file may be corrupt or not have a recognised filename."); return(null); } }
PackagePhysicalFileMetadata SourceFromCache(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 [] { Extension })); foreach (var file in files) { var package = PackageName.FromFile(file); if (package == null) { continue; } if (string.Equals(package.PackageId, packageId, StringComparison.OrdinalIgnoreCase) && package.Version.Equals(version)) { return(PackagePhysicalFileMetadata.Build(file, package)); } } return(null); }
void ValidateParameters(out string basisFilePath, out string deltaFilePath, out string newFilePath) { Guard.NotNullOrWhiteSpace(basisFileName, "No basis file was specified. Please pass --basisFileName MyPackage.1.0.0.0.nupkg"); Guard.NotNullOrWhiteSpace(fileHash, "No file hash was specified. Please pass --fileHash MyFileHash"); Guard.NotNullOrWhiteSpace(deltaFileName, "No delta file was specified. Please pass --deltaFileName MyPackage.1.0.0.0_to_1.0.0.1.octodelta"); Guard.NotNullOrWhiteSpace(newFileName, "No new file name was specified. Please pass --newFileName MyPackage.1.0.0.1.nupkg"); basisFilePath = basisFileName; if (!File.Exists(basisFileName)) { basisFilePath = Path.GetFullPath(basisFileName); if (!File.Exists(basisFilePath)) { throw new CommandException("Could not find basis file: " + basisFileName); } } deltaFilePath = deltaFileName; if (!File.Exists(deltaFileName)) { deltaFilePath = Path.GetFullPath(deltaFileName); if (!File.Exists(deltaFilePath)) { throw new CommandException("Could not find delta file: " + deltaFileName); } } // Probably dont need to do this since the server appends a guid in the name... maybe it was originall put here in the name of safety? var newPackageDetails = PackageName.FromFile(newFileName); newFilePath = Path.Combine(PackageStore.GetPackagesDirectory(), PackageName.ToCachedFileName(newPackageDetails.PackageId, newPackageDetails.Version, newPackageDetails.Extension)); var hash = HashCalculator.Hash(basisFileName); if (hash != fileHash) { throw new CommandException($"Basis file hash `{hash}` does not match the file hash specified `{fileHash}`"); } }
protected override string GetTargetPath(RunningDeployment deployment) { var metadata = PackageName.FromFile(deployment.PackageFilePath); return(ApplicationDirectory.GetApplicationDirectory(metadata, deployment.Variables, fileSystem)); }
public void FromFile_UnknownInvalidVersionType() { Assert.Throws <Exception>(() => PackageName.FromFile("blah/[email protected]%[email protected]")); }
public void FromFile_InvalidSemVer() { Assert.Throws <Exception>(() => PackageName.FromFile("blah/[email protected]%[email protected]")); }