From d7376f84c3af79848d9b88af713af006dd13e6af Mon Sep 17 00:00:00 2001 From: Wes Haggard Date: Thu, 7 Apr 2016 17:25:37 -0700 Subject: [PATCH] Add PullNupkgFilesFromBlob target This target pulls all the nupkgs from the matching azure storage and then copies them into the artifact\$(RID)\packages folder. --- scripts/dotnet-cli-build/PublishTargets.cs | 11 +++++++++++ .../Publishing/AzurePublisher.cs | 19 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/scripts/dotnet-cli-build/PublishTargets.cs b/scripts/dotnet-cli-build/PublishTargets.cs index 125456e4a..7b7d24f8d 100644 --- a/scripts/dotnet-cli-build/PublishTargets.cs +++ b/scripts/dotnet-cli-build/PublishTargets.cs @@ -322,5 +322,16 @@ namespace Microsoft.DotNet.Cli.Build } return c.Success(); } + + [Target(nameof(PrepareTargets.Init), nameof(InitPublish))] + public static BuildTargetResult PullNupkgFilesFromBlob(BuildTargetContext c) + { + var hostBlob = $"{Channel}/Binaries/{CliNuGetVersion}/"; + + Directory.CreateDirectory(Dirs.Packages); + AzurePublisherTool.DownloadFiles(hostBlob, ".nupkg", Dirs.Packages); + + return c.Success(); + } } } diff --git a/scripts/dotnet-cli-build/Publishing/AzurePublisher.cs b/scripts/dotnet-cli-build/Publishing/AzurePublisher.cs index 0ac9834d1..d0e2b7c5b 100644 --- a/scripts/dotnet-cli-build/Publishing/AzurePublisher.cs +++ b/scripts/dotnet-cli-build/Publishing/AzurePublisher.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using System.Linq; using System.Net.Http; using System.Text; using Microsoft.DotNet.Cli.Build.Framework; @@ -92,5 +93,23 @@ namespace Microsoft.DotNet.Cli.Build { return $"{channel}/Binaries/{version}/{Path.GetFileName(archiveFile)}"; } + + public async void DownloadFiles(string blobVirtualDirectory, string fileExtension, string downloadPath) + { + CloudBlobDirectory blobDir = _blobContainer.GetDirectoryReference(blobVirtualDirectory); + BlobContinuationToken continuationToken = new BlobContinuationToken(); + + var blobFiles = blobDir.ListBlobsSegmentedAsync(continuationToken).Result; + + foreach (var blobFile in blobFiles.Results.OfType()) + { + if (Path.GetExtension(blobFile.Uri.AbsoluteUri) == fileExtension) + { + string localBlobFile = Path.Combine(downloadPath, Path.GetFileName(blobFile.Uri.AbsoluteUri)); + Console.WriteLine($"Downloading {blobFile.Uri.AbsoluteUri} to {localBlobFile}..."); + blobFile.DownloadToFileAsync(localBlobFile, FileMode.Create).Wait(); + } + } + } } }