diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 4558c7d426..b3a71255fc 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,4 +1,7 @@ -#### 0.14.0 - 13.11.2014 +#### 0.14.1 - 14.11.2014 +* Support feeds that don't support NormalizedVersion - https://github.com/fsprojects/Paket/issues/361#issuecomment-63048992 + +#### 0.14.0 - 14.11.2014 * Uses Nuget v3 API, which enables much faster resolver * BUGFIX: Keep project file order similar to VS order * Support unlisted dependencies if nothing else fits - https://github.com/fsprojects/Paket/issues/327 diff --git a/src/Paket.Core/NuGetV2.fs b/src/Paket.Core/NuGetV2.fs index bff44fcd21..b5d8c8f4c9 100644 --- a/src/Paket.Core/NuGetV2.fs +++ b/src/Paket.Core/NuGetV2.fs @@ -180,13 +180,21 @@ let parseODataDetails(nugetURL,packageName,version,raw) = SourceUrl = nugetURL Unlisted = publishDate = Constants.MagicUnlistingDate } + /// Gets package details from Nuget via OData -let getDetailsFromNugetViaOData auth nugetURL package (version:SemVerInfo) = +let getRawDetailsFromNuGetViaOData auth nugetURL package (version:SemVerInfo) = async { - let! raw = getFromUrl(auth,sprintf "%s/Packages?$filter=Id eq '%s' and NormalizedVersion eq '%s'" nugetURL package (version.Normalize())) - return parseODataDetails(nugetURL,package,version,raw) + try + return! getFromUrl(auth,sprintf "%s/Packages?$filter=Id eq '%s' and NormalizedVersion eq '%s'" nugetURL package (version.Normalize())) + with _ -> + return! getFromUrl(auth,sprintf "%s/Packages?$filter=Id eq '%s' and Version eq '%s'" nugetURL package (version.ToString())) } +let getDetailsFromNuGetViaOData auth nugetURL package (version:SemVerInfo) = + async { + let! raw = getRawDetailsFromNuGetViaOData auth nugetURL package version + return parseODataDetails(nugetURL,package,version,raw) + } /// The NuGet cache folder. let CacheFolder = @@ -203,15 +211,15 @@ let private loadFromCacheOrOData force fileName auth nugetURL package version = let json = File.ReadAllText(fileName) let cachedObject = JsonConvert.DeserializeObject(json) if cachedObject.Name = null || cachedObject.DownloadUrl = null || cachedObject.SourceUrl = null then - let! details = getDetailsFromNugetViaOData auth nugetURL package version + let! details = getDetailsFromNuGetViaOData auth nugetURL package version return true,details else return false,cachedObject with _ -> - let! details = getDetailsFromNugetViaOData auth nugetURL package version + let! details = getDetailsFromNuGetViaOData auth nugetURL package version return true,details else - let! details = getDetailsFromNugetViaOData auth nugetURL package version + let! details = getDetailsFromNuGetViaOData auth nugetURL package version return true,details } @@ -223,13 +231,13 @@ let getDetailsFromNuget force auth nugetURL package (version:SemVerInfo) = let fi = FileInfo(Path.Combine(CacheFolder,sprintf "%s.%s.json" package (version.Normalize()))) let! (invalidCache,details) = loadFromCacheOrOData force fi.FullName auth nugetURL package version if details.SourceUrl <> nugetURL then - return! getDetailsFromNugetViaOData auth nugetURL package version + return! getDetailsFromNuGetViaOData auth nugetURL package version else if invalidCache then File.WriteAllText(fi.FullName,JsonConvert.SerializeObject(details)) return details with - | _ -> return! getDetailsFromNugetViaOData auth nugetURL package version + | _ -> return! getDetailsFromNuGetViaOData auth nugetURL package version } /// Reads direct dependencies from a nupkg file