/// <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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 4
0
        public void ExtractToApplicationDirectory(PathToPackage pathToPackage, IPackageExtractor customPackageExtractor = null)
        {
            var metadata   = PackageName.FromFile(pathToPackage);
            var targetPath = ApplicationDirectory.GetApplicationDirectory(metadata, variables, fileSystem);

            Extract(pathToPackage, targetPath, customPackageExtractor);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
 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);
     }
 }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        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));
        }
Exemplo n.º 14
0
 public void FromFile_UnknownInvalidVersionType()
 {
     Assert.Throws <Exception>(() => PackageName.FromFile("blah/[email protected]%[email protected]"));
 }
Exemplo n.º 15
0
 public void FromFile_InvalidSemVer()
 {
     Assert.Throws <Exception>(() => PackageName.FromFile("blah/[email protected]%[email protected]"));
 }