From 475bf3dcbdd038d1212ac13bdfa31cc58907dd3b Mon Sep 17 00:00:00 2001 From: Alex Povar Date: Thu, 15 Jun 2017 17:50:01 +0300 Subject: [PATCH] Copy missing changes from legacy NuGet helpers --- src/app/Fake.DotNet.NuGet/NuGet.fs | 51 ++++++++++++++++++++---------- 1 file changed, 34 insertions(+), 17 deletions(-) diff --git a/src/app/Fake.DotNet.NuGet/NuGet.fs b/src/app/Fake.DotNet.NuGet/NuGet.fs index 304414b7ca8..c568f86dc55 100644 --- a/src/app/Fake.DotNet.NuGet/NuGet.fs +++ b/src/app/Fake.DotNet.NuGet/NuGet.fs @@ -59,6 +59,8 @@ type NuGetParams = OutputPath : string PublishUrl : string AccessKey : string + SymbolPublishUrl: string + SymbolAccessKey: string NoDefaultExcludes : bool NoPackageAnalysis : bool ProjectFile : string @@ -99,8 +101,10 @@ let NuGetDefaults() = IncludeReferencedProjects = false OutputPath = "./NuGet" WorkingDir = "./NuGet" - PublishUrl = null + PublishUrl = "https://www.nuget.org/api/v2/package" AccessKey = null + SymbolPublishUrl = null + SymbolAccessKey = null NoDefaultExcludes = false NoPackageAnalysis = false PublishTrials = 5 @@ -141,9 +145,12 @@ let GetPackageVersion deploymentsDir package = with | exn -> new Exception("Could not detect package version for " + package, exn) |> raise -let private replaceAccessKey key (text : string) = - if isNullOrEmpty key then text - else text.Replace(key, "PRIVATEKEY") +let private replaceAccessKeys parameters (text:string) = + let replaceKey key (str:string) = + if isNullOrEmpty key then str + else str.Replace(key, "PRIVATEKEY") + + text |> (replaceKey parameters.AccessKey >> replaceKey parameters.SymbolAccessKey) let private createNuSpecFromTemplate parameters (templateNuSpec:FileInfo) = let specFile = parameters.WorkingDir @@ (templateNuSpec.Name.Replace("nuspec", "") + parameters.Version + ".nuspec") @@ -301,14 +308,19 @@ let private pack parameters nuspecFile = /// push package (and try again if something fails) let rec private publish parameters = - let source = - if isNullOrEmpty parameters.PublishUrl then "" - else sprintf "-source %s" parameters.PublishUrl - - let args = sprintf "push \"%s\" %s %s" (parameters.OutputPath @@ packageFileName parameters - |> FullName) parameters.AccessKey source - Trace.tracefn "%s %s in WorkingDir: %s Trials left: %d" parameters.ToolPath (replaceAccessKey parameters.AccessKey args) - (FullName parameters.WorkingDir) parameters.PublishTrials + // Newer NuGet requires source to be always specified, so if PublishUrl is empty, + // ignore symbol source - the produced source is broken anyway. + let normalize str = if isNullOrEmpty str then None else Some str + let source = match parameters.PublishUrl |> normalize, parameters.SymbolPublishUrl |> normalize with + | None, _ -> "" + | Some source, None -> sprintf "-source %s" source + | Some source, Some symSource -> sprintf "-source %s -SymbolSource %s -SymbolApiKey %s" + source symSource parameters.SymbolAccessKey + + let args = sprintf "push \"%s\" %s %s" (parameters.OutputPath @@ packageFileName parameters |> FullName) + parameters.AccessKey source + Trace.tracefn "%s %s in WorkingDir: %s Trials left: %d" parameters.ToolPath (replaceAccessKeys parameters args) + (FullName parameters.WorkingDir) parameters.PublishTrials try let result = let tracing = shouldEnableProcessTracing() @@ -330,7 +342,7 @@ let rec private publishSymbols parameters = let args = sprintf "push -source %s \"%s\" %s" parameters.PublishUrl (packageFileName parameters) parameters.AccessKey - Trace.tracefn "%s %s in WorkingDir: %s Trials left: %d" parameters.ToolPath (replaceAccessKey parameters.AccessKey args) + Trace.tracefn "%s %s in WorkingDir: %s Trials left: %d" parameters.ToolPath (replaceAccessKeys parameters args) (FullName parameters.WorkingDir) parameters.PublishTrials try let result = @@ -361,7 +373,7 @@ let NuGetPackDirectly setParams nuspecOrProjectFile = with exn -> (if exn.InnerException <> null then exn.Message + "\r\n" + exn.InnerException.Message else exn.Message) - |> replaceAccessKey parameters.AccessKey + |> replaceAccessKeys parameters |> failwith /// Creates a new NuGet package based on the given .nuspec or project file. @@ -382,7 +394,7 @@ let NuGetPack setParams nuspecOrProjectFile = with exn -> (if exn.InnerException <> null then exn.Message + "\r\n" + exn.InnerException.Message else exn.Message) - |> replaceAccessKey parameters.AccessKey + |> replaceAccessKeys parameters |> failwith /// Publishes a NuGet package to the nuget server. @@ -392,7 +404,12 @@ let NuGetPack setParams nuspecOrProjectFile = let NuGetPublish setParams = let parameters = NuGetDefaults() |> setParams use __ = Trace.traceTask "NuGet-Push" (packageFileName parameters) - publish parameters + try + publish parameters + with exn -> + if exn.InnerException <> null then exn.Message + "\r\n" + exn.InnerException.Message else exn.Message + |> replaceAccessKeys parameters + |> failwith /// Creates a new NuGet package, and optionally publishes it. /// Template parameter substitution is performed when passing a .nuspec @@ -416,7 +433,7 @@ let NuGet setParams nuspecOrProjectFile = with exn -> (if exn.InnerException <> null then exn.Message + "\r\n" + exn.InnerException.Message else exn.Message) - |> replaceAccessKey parameters.AccessKey + |> replaceAccessKeys parameters |> failwith /// NuSpec metadata type