diff --git a/source/Calamari.ConsolidateCalamariPackages/Calamari.ConsolidateCalamariPackages.csproj b/source/Calamari.ConsolidateCalamariPackages/Calamari.ConsolidateCalamariPackages.csproj index 7a93745308..ee3cc2d8a8 100644 --- a/source/Calamari.ConsolidateCalamariPackages/Calamari.ConsolidateCalamariPackages.csproj +++ b/source/Calamari.ConsolidateCalamariPackages/Calamari.ConsolidateCalamariPackages.csproj @@ -19,7 +19,6 @@ - diff --git a/source/Calamari.ConsolidateCalamariPackages/ConsolidatedPackage.cs b/source/Calamari.ConsolidateCalamariPackages/ConsolidatedPackage.cs index 61b5c105a5..4b1e931562 100644 --- a/source/Calamari.ConsolidateCalamariPackages/ConsolidatedPackage.cs +++ b/source/Calamari.ConsolidateCalamariPackages/ConsolidatedPackage.cs @@ -1,9 +1,9 @@ using System; using System.Collections.Generic; using System.IO; +using System.IO.Compression; using System.Linq; using Octopus.Calamari.ConsolidatedPackage.Api; -using SharpCompress.Archives.Zip; namespace Octopus.Calamari.ConsolidatedPackage { @@ -28,21 +28,16 @@ public ConsolidatedPackage(IConsolidatedPackageStreamProvider packageStreamProvi throw new Exception($"Could not find platform {platform} for {calamariFlavour}"); } - using (var sourceStream = packageStreamProvider.OpenStream()) + var platformFilesLookup = platformFiles.ToDictionary(f => f.Source); + + using var sourceStream = packageStreamProvider.OpenStream(); + using var source = new ZipArchive(sourceStream, ZipArchiveMode.Read); + foreach (var sourceEntry in source.Entries) { - using (var source = ZipArchive.Open(sourceStream)) - { - foreach (var fileTransfer in platformFiles) - { - var sourceEntry = source.Entries.FirstOrDefault(e => e.Key is not null && e.Key.Equals(fileTransfer.Source)); - if(sourceEntry is null) continue; - - using (var sourceEntryStream = sourceEntry.OpenEntryStream()) - { - yield return (fileTransfer.Destination, sourceEntry.Size, sourceEntryStream); - } - } - } + if (!platformFilesLookup.TryGetValue(sourceEntry.FullName, out var fileTransfer)) continue; + + using var sourceEntryStream = sourceEntry.Open(); + yield return (fileTransfer.Destination, sourceEntry.Length, sourceEntryStream); } } } diff --git a/source/Calamari.ConsolidateCalamariPackages/ConsolidatedPackageIndexLoader.cs b/source/Calamari.ConsolidateCalamariPackages/ConsolidatedPackageIndexLoader.cs index 24e58bef0e..8d325a6166 100644 --- a/source/Calamari.ConsolidateCalamariPackages/ConsolidatedPackageIndexLoader.cs +++ b/source/Calamari.ConsolidateCalamariPackages/ConsolidatedPackageIndexLoader.cs @@ -1,9 +1,8 @@ using System; using System.IO; -using System.Linq; +using System.IO.Compression; using Newtonsoft.Json; using Octopus.Calamari.ConsolidatedPackage.Api; -using SharpCompress.Archives.Zip; namespace Octopus.Calamari.ConsolidatedPackage { @@ -11,14 +10,14 @@ public class ConsolidatedPackageIndexLoader { public IConsolidatedPackageIndex Load(Stream zipStream) { - using var zip = ZipArchive.Open(zipStream); - var entry = zip.Entries.First(e => e.Key == "index.json"); + using var zip = new ZipArchive(zipStream, ZipArchiveMode.Read); + var entry = zip.GetEntry("index.json"); if (entry == null) { throw new Exception($"index.json not found in supplied stream."); } - using var entryStream = entry.OpenEntryStream(); + using var entryStream = entry.Open(); return From(entryStream); }