Skip to content

Commit 833b36c

Browse files
committed
Paket convert-from-nuget doesn't crash on NuGet v2 syntax - fixes fsprojects#3151
1 parent eaf56e7 commit 833b36c

15 files changed

Lines changed: 95 additions & 74 deletions

File tree

‎RELEASE_NOTES.md‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
#### 5.156.1 - 2018-04-13
2+
* BUGFIX: Paket convert-from-nuget doesn't crash on NuGet v2 syntax - https://github.com/fsprojects/Paket/issues/3151
3+
14
#### 5.156.0 - 2018-04-12
25
* Support monoandroid version 8.1 - https://github.com/fsprojects/Paket/pull/3146
36

‎src/Paket.Bootstrapper/Properties/AssemblyInfo.cs‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@
44
[assembly: AssemblyTitleAttribute("Paket.Bootstrapper")]
55
[assembly: AssemblyProductAttribute("Paket")]
66
[assembly: AssemblyDescriptionAttribute("A dependency manager for .NET with support for NuGet packages and git repositories.")]
7-
[assembly: AssemblyVersionAttribute("5.156.0")]
8-
[assembly: AssemblyFileVersionAttribute("5.156.0")]
9-
[assembly: AssemblyInformationalVersionAttribute("5.156.0")]
7+
[assembly: AssemblyVersionAttribute("5.156.1")]
8+
[assembly: AssemblyFileVersionAttribute("5.156.1")]
9+
[assembly: AssemblyInformationalVersionAttribute("5.156.1")]
1010
namespace System {
1111
internal static class AssemblyVersionInformation {
1212
internal const System.String AssemblyTitle = "Paket.Bootstrapper";
1313
internal const System.String AssemblyProduct = "Paket";
1414
internal const System.String AssemblyDescription = "A dependency manager for .NET with support for NuGet packages and git repositories.";
15-
internal const System.String AssemblyVersion = "5.156.0";
16-
internal const System.String AssemblyFileVersion = "5.156.0";
17-
internal const System.String AssemblyInformationalVersion = "5.156.0";
15+
internal const System.String AssemblyVersion = "5.156.1";
16+
internal const System.String AssemblyFileVersion = "5.156.1";
17+
internal const System.String AssemblyInformationalVersion = "5.156.1";
1818
}
1919
}

‎src/Paket.Core/AssemblyInfo.fs‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@ open System.Reflection
66
[<assembly: AssemblyProductAttribute("Paket")>]
77
[<assembly: AssemblyCompanyAttribute("Paket team")>]
88
[<assembly: AssemblyDescriptionAttribute("A dependency manager for .NET with support for NuGet packages and git repositories.")>]
9-
[<assembly: AssemblyVersionAttribute("5.156.0")>]
10-
[<assembly: AssemblyFileVersionAttribute("5.156.0")>]
11-
[<assembly: AssemblyInformationalVersionAttribute("5.156.0")>]
9+
[<assembly: AssemblyVersionAttribute("5.156.1")>]
10+
[<assembly: AssemblyFileVersionAttribute("5.156.1")>]
11+
[<assembly: AssemblyInformationalVersionAttribute("5.156.1")>]
1212
do ()
1313

1414
module internal AssemblyVersionInformation =
1515
let [<Literal>] AssemblyTitle = "Paket.Core"
1616
let [<Literal>] AssemblyProduct = "Paket"
1717
let [<Literal>] AssemblyCompany = "Paket team"
1818
let [<Literal>] AssemblyDescription = "A dependency manager for .NET with support for NuGet packages and git repositories."
19-
let [<Literal>] AssemblyVersion = "5.156.0"
20-
let [<Literal>] AssemblyFileVersion = "5.156.0"
21-
let [<Literal>] AssemblyInformationalVersion = "5.156.0"
19+
let [<Literal>] AssemblyVersion = "5.156.1"
20+
let [<Literal>] AssemblyFileVersion = "5.156.1"
21+
let [<Literal>] AssemblyInformationalVersion = "5.156.1"

‎src/Paket.Core/Dependencies/PackageResolver.fs‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ module ResolutionRaw =
202202

203203
errorReport.AddLine (sprintf " Conflict detected:")
204204

205-
let getConflictMessage req =
205+
let getConflictMessage (req:PackageRequirement) =
206206
let vr = formatVR req.VersionRequirement
207207
let pr = formatPR req.VersionRequirement
208208
let tp = if req.TransitivePrereleases then "*" else ""
@@ -555,7 +555,7 @@ let private getCompatibleVersions
555555
| true, p ->
556556
allRequirementsOfCurrentPackage
557557
|> Set.forall (fun r ->
558-
let mapped = mapF r
558+
let mapped : PackageRequirement = mapF r
559559
mapped.VersionRequirement.IsInRange cache.Version ||
560560
mapped.IncludingPrereleases(p.VersionRequirement.PreReleases).VersionRequirement.IsInRange cache.Version)
561561
| _ ->

‎src/Paket.Core/Installation/InstallProcess.fs‎

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,10 @@ open Chessie.ErrorHandling
66
open Paket.Domain
77
open Paket.Logging
88
open Paket.BindingRedirects
9-
open Paket.ModuleResolver
10-
open Paket.PackageResolver
119
open System.IO
1210
open Paket.PackageSources
13-
open Paket.PackagesConfigFile
1411
open Paket.Requirements
1512
open System.Collections.Generic
16-
open Paket.ProjectFile
1713
open System
1814

1915
let updatePackagesConfigFile (model: Map<GroupName*PackageName,SemVerInfo*InstallSettings>) packagesConfigFileName =
@@ -23,8 +19,9 @@ let updatePackagesConfigFile (model: Map<GroupName*PackageName,SemVerInfo*Instal
2319
model
2420
|> Seq.filter (fun kv -> defaultArg (snd kv.Value).IncludeVersionInPath false)
2521
|> Seq.map (fun kv ->
22+
let v = fst kv.Value
2623
{ NugetPackage.Id = (snd kv.Key).ToString()
27-
VersionRange = VersionRange.Specific (fst kv.Value)
24+
VersionRequirement = VersionRequirement(VersionRange.Specific v,PreReleaseStatus.No)
2825
Kind = NugetPackageKind.Package
2926
TargetFramework = None })
3027
|> Seq.toList

‎src/Paket.Core/PackageManagement/NugetConvert.fs‎

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -217,9 +217,9 @@ module ConvertResultR =
217217
PaketEnv = paketEnv
218218
SolutionFiles = solutionFiles }
219219

220-
let createPackageRequirement sources (packageName, versionRange, restrictions) dependenciesFileName =
220+
let createPackageRequirement sources (packageName, versionRequirement, restrictions) dependenciesFileName =
221221
{ Name = PackageName packageName
222-
VersionRequirement = VersionRequirement(versionRange, PreReleaseStatus.No)
222+
VersionRequirement = versionRequirement
223223
ResolverStrategyForDirectDependencies = None
224224
ResolverStrategyForTransitives = None
225225
Settings = { InstallSettings.Default with FrameworkRestrictions = restrictions }
@@ -240,7 +240,7 @@ let private addFSharpCoreToDependenciesIfRequired nugetEnv packages =
240240
packages
241241
|> Seq.exists (fun (n,_,_,_) -> "fsharp.core".Equals(n, StringComparison.OrdinalIgnoreCase))
242242
if hasFSharpProject && not hasFSharpCorePackage then
243-
let fsCore = ("FSharp.Core", VersionRange.AtLeast "0",FrameworkRestriction.NoRestriction, NugetPackageKind.Package)
243+
let fsCore = ("FSharp.Core", VersionRequirement.AllReleases,FrameworkRestriction.NoRestriction, NugetPackageKind.Package)
244244
fsCore :: packages
245245
else
246246
packages
@@ -252,12 +252,12 @@ let createDependenciesFileR (rootDirectory : DirectoryInfo) nugetEnv mode =
252252
let allVersionsGroupped =
253253
nugetEnv.NuGetProjectFiles
254254
|> List.collect (fun (pf,c) ->
255-
c
256-
|> Option.map (fun x -> x.Packages)
257-
|> Option.toList
258-
|> List.concat
259-
|> List.append (ProjectFile.dotNetCorePackages pf)
260-
|> List.append (ProjectFile.cliTools pf))
255+
c
256+
|> Option.map (fun x -> x.Packages)
257+
|> Option.toList
258+
|> List.concat
259+
|> List.append (ProjectFile.dotNetCorePackages pf)
260+
|> List.append (ProjectFile.cliTools pf))
261261
|> List.groupBy (fun p -> p.Id)
262262

263263
let findDistinctPackages selector =
@@ -270,13 +270,13 @@ let createDependenciesFileR (rootDirectory : DirectoryInfo) nugetEnv mode =
270270
if List.length versions > 1 then
271271
traceWarnfn message name versions
272272

273-
findWarnings (List.choose (fun p -> match p.VersionRange with Specific v -> Some v | _ -> None) >> List.distinct >> List.map string)
273+
findWarnings (List.choose (fun p -> match p.VersionRequirement.Range with Specific v -> Some v | _ -> None) >> List.distinct >> List.map string)
274274
"Package %s is referenced multiple times in different versions: %A. Paket will choose the latest one."
275275
findWarnings (List.map (fun p -> p.TargetFramework) >> List.distinct >> List.choose id >> List.map string)
276276
"Package %s is referenced multiple times with different target frameworks : %A. Paket may disregard target framework."
277277

278278
let latestVersions =
279-
findDistinctPackages (List.map (fun p -> p.VersionRange, p.TargetFramework, p.Kind) >> List.distinct)
279+
findDistinctPackages (List.map (fun p -> p.VersionRequirement, p.TargetFramework, p.Kind) >> List.distinct)
280280
|> List.map (fun (name, versions) ->
281281
let latestVersion, _, _ = versions |> List.maxBy (fun (x,_,_) -> x)
282282
let kind =
@@ -303,7 +303,7 @@ let createDependenciesFileR (rootDirectory : DirectoryInfo) nugetEnv mode =
303303

304304
let packages =
305305
match nugetEnv.NuGetExe with
306-
| Some _ -> ("NuGet.CommandLine",VersionRange.AtLeast "0",FrameworkRestriction.NoRestriction, NugetPackageKind.Package) :: latestVersions
306+
| Some _ -> ("NuGet.CommandLine",VersionRequirement.AllReleases,FrameworkRestriction.NoRestriction, NugetPackageKind.Package) :: latestVersions
307307
| _ -> latestVersions
308308
|> addFSharpCoreToDependenciesIfRequired nugetEnv
309309

@@ -312,12 +312,12 @@ let createDependenciesFileR (rootDirectory : DirectoryInfo) nugetEnv mode =
312312
packages
313313
|> List.map (fun (name, vr, restrictions, kind) ->
314314
Constants.MainDependencyGroup, PackageName name, vr, { InstallSettings.Default with FrameworkRestrictions = ExplicitRestriction restrictions}, kind)
315-
|> List.fold (fun (dependenciesFile:DependenciesFile) (groupName, packageName,versionRange,installSettings,kind) ->
315+
|> List.fold (fun (dependenciesFile:DependenciesFile) (groupName, packageName,versionRequirement,installSettings,kind) ->
316316
let reqKind =
317317
match kind with
318318
| NugetPackageKind.Package -> PackageRequirementKind.Package
319319
| NugetPackageKind.DotnetCliTool -> PackageRequirementKind.DotnetCliTool
320-
dependenciesFile.Add(groupName, packageName,versionRange,installSettings, reqKind)) dependenciesFile
320+
dependenciesFile.Add(groupName, packageName,versionRequirement.Range,installSettings, reqKind)) dependenciesFile
321321
try
322322
DependenciesFile.ReadFromFile dependenciesFileName
323323
|> ok
@@ -397,7 +397,7 @@ let convertProjects nugetEnv =
397397
|> Option.toList
398398
|> List.concat
399399
|> List.choose (fun p ->
400-
match p.VersionRange with
400+
match p.VersionRequirement.Range with
401401
| VersionRange.Specific v -> Some(p.Id, v)
402402
| _ -> None )
403403

‎src/Paket.Core/PaketConfigFiles/PackagesConfigFile.fs‎

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@ let Read fileName =
1515
doc.Load f)
1616

1717
[for node in doc.SelectNodes("//package") ->
18+
let v = node.Attributes.["version"].Value
1819
{ NugetPackage.Id = node.Attributes.["id"].Value
19-
VersionRange = VersionRange.Specific (SemVer.Parse node.Attributes.["version"].Value)
20+
VersionRequirement = VersionRequirement.Parse v
2021
Kind = NugetPackageKind.Package
2122
TargetFramework =
2223
node
@@ -28,13 +29,20 @@ let Serialize (packages: NugetPackage seq) =
2829
let packages =
2930
packages
3031
|> Seq.choose (fun p ->
31-
match p.VersionRange with
32+
match p.VersionRequirement.Range with
3233
| VersionRange.Specific v ->
3334
let framework =
3435
match p.TargetFramework with
3536
| Some tf -> sprintf "targetFramework=\"%s\" " (tf.Replace(">= ",""))
3637
| _ -> ""
3738

39+
Some (sprintf """ <package id="%s" version="[%O]" %s/>""" p.Id v framework)
40+
| VersionRange.Minimum v ->
41+
let framework =
42+
match p.TargetFramework with
43+
| Some tf -> sprintf "targetFramework=\"%s\" " (tf.Replace(">= ",""))
44+
| _ -> ""
45+
3846
Some (sprintf """ <package id="%s" version="%O" %s/>""" p.Id v framework)
3947
| _ -> None)
4048

‎src/Paket.Core/PaketConfigFiles/ProjectFile.fs‎

Lines changed: 20 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1628,46 +1628,37 @@ module ProjectFile =
16281628

16291629
tryNextPlat platforms []
16301630

1631+
let versionRequirement node =
1632+
let v =
1633+
match node |> getAttribute "Version" with
1634+
| Some version -> version
1635+
| None ->
1636+
match node |> getNode "Version" with
1637+
| Some n -> n.InnerText
1638+
| None -> "*"
1639+
1640+
if v.Contains "[" || v.Contains "(" then
1641+
VersionRequirement.Parse v
1642+
else
1643+
let prerelease = if v.Contains "-" then PreReleaseStatus.All else PreReleaseStatus.No
1644+
if v.Contains "*" then
1645+
VersionRequirement.VersionRequirement(VersionRange.AtLeast (v.Replace("*","0")),prerelease)
1646+
else
1647+
VersionRequirement.VersionRequirement(VersionRange.Exactly v,prerelease)
1648+
16311649
let dotNetCorePackages (projectFile: ProjectFile) =
16321650
packageReferencesNoPrivateAssets projectFile
16331651
|> List.map (fun node ->
1634-
let versionRange =
1635-
let v =
1636-
match node |> getAttribute "Version" with
1637-
| Some version -> version
1638-
| None ->
1639-
match node |> getNode "Version" with
1640-
| Some n -> n.InnerText
1641-
| None -> "*"
1642-
1643-
if v.Contains "*" then
1644-
VersionRange.AtLeast (v.Replace("*","0"))
1645-
else
1646-
VersionRange.Exactly v
16471652
{ NugetPackage.Id = getPackageIdAttribute projectFile node
1648-
VersionRange = versionRange
1653+
VersionRequirement = versionRequirement node
16491654
Kind = NugetPackageKind.Package
16501655
TargetFramework = None })
16511656

16521657
let cliTools (projectFile: ProjectFile) =
16531658
cliToolsNoPrivateAssets projectFile
16541659
|> List.map (fun node ->
1655-
let versionRange =
1656-
let v =
1657-
match node |> getAttribute "Version" with
1658-
| Some version -> version
1659-
| None ->
1660-
match node |> getNode "Version" with
1661-
| Some n -> n.InnerText
1662-
| None -> "*"
1663-
1664-
if v.Contains "*" then
1665-
VersionRange.AtLeast (v.Replace("*","0"))
1666-
else
1667-
VersionRange.Exactly v
1668-
16691660
{ NugetPackage.Id = node |> getAttribute "Include" |> Option.get
1670-
VersionRange = versionRange
1661+
VersionRequirement = versionRequirement node
16711662
Kind = NugetPackageKind.DotnetCliTool
16721663
TargetFramework = None })
16731664

‎src/Paket.Core/Versioning/PackageSources.fs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ let DefaultNuGetSource = PackageSource.NuGetV2Source Constants.DefaultNuGetStrea
199199

200200
type NugetPackage = {
201201
Id : string
202-
VersionRange : VersionRange
202+
VersionRequirement : VersionRequirement
203203
Kind : NugetPackageKind
204204
TargetFramework : string option
205205
}

‎src/Paket/AssemblyInfo.fs‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@ open System.Reflection
66
[<assembly: AssemblyProductAttribute("Paket")>]
77
[<assembly: AssemblyCompanyAttribute("Paket team")>]
88
[<assembly: AssemblyDescriptionAttribute("A dependency manager for .NET with support for NuGet packages and git repositories.")>]
9-
[<assembly: AssemblyVersionAttribute("5.156.0")>]
10-
[<assembly: AssemblyFileVersionAttribute("5.156.0")>]
11-
[<assembly: AssemblyInformationalVersionAttribute("5.156.0")>]
9+
[<assembly: AssemblyVersionAttribute("5.156.1")>]
10+
[<assembly: AssemblyFileVersionAttribute("5.156.1")>]
11+
[<assembly: AssemblyInformationalVersionAttribute("5.156.1")>]
1212
do ()
1313

1414
module internal AssemblyVersionInformation =
1515
let [<Literal>] AssemblyTitle = "Paket"
1616
let [<Literal>] AssemblyProduct = "Paket"
1717
let [<Literal>] AssemblyCompany = "Paket team"
1818
let [<Literal>] AssemblyDescription = "A dependency manager for .NET with support for NuGet packages and git repositories."
19-
let [<Literal>] AssemblyVersion = "5.156.0"
20-
let [<Literal>] AssemblyFileVersion = "5.156.0"
21-
let [<Literal>] AssemblyInformationalVersion = "5.156.0"
19+
let [<Literal>] AssemblyVersion = "5.156.1"
20+
let [<Literal>] AssemblyFileVersion = "5.156.1"
21+
let [<Literal>] AssemblyInformationalVersion = "5.156.1"

0 commit comments

Comments
 (0)