@@ -21,6 +21,10 @@ type InstallOptions =
2121 Redirects = false
2222 Settings = InstallSettings.Default }
2323
24+ type VersionStrategy = {
25+ VersionRequirement : VersionRequirement
26+ ResolverStrategy : ResolverStrategy }
27+
2428/// [ omit]
2529module DependenciesFileParser =
2630
@@ -231,7 +235,10 @@ module DependenciesFileParser =
231235 packages |> List.rev,
232236 remoteFiles |> List.rev,
233237 lines
234-
238+
239+ let parseVersionString ( version : string ) =
240+ { VersionRequirement = parseVersionRequirement ( version.Trim '!' )
241+ ResolverStrategy = parseResolverStrategy version }
235242
236243module DependenciesFileSerializer =
237244 let formatVersionRange strategy ( version : VersionRequirement ) : string =
@@ -363,22 +370,21 @@ type DependenciesFile(fileName,options,sources,packages : PackageRequirement lis
363370
364371
365372 member this.AddAdditionalPackage ( packageName : PackageName , version : string , settings ) =
366- let versionRequirement = DependenciesFileParser.parseVersionRequirement ( version.Trim '!' )
367- let resolverStrategy = DependenciesFileParser.parseResolverStrategy version
373+ let vr = DependenciesFileParser.parseVersionString version
368374
369- this.AddAdditionalPackage( packageName, versionRequirement , resolverStrategy , settings)
375+ this.AddAdditionalPackage( packageName, vr.VersionRequirement , vr.ResolverStrategy , settings)
370376
371377 member this.AddFixedPackage ( packageName : PackageName , version : string , settings ) =
372- let versionRange = DependenciesFileParser.parseVersionRequirement ( version.Trim '!' )
378+ let vr = DependenciesFileParser.parseVersionString version
373379
374380 let resolverStrategy , versionRequirement =
375381 match packages |> List.tryFind ( fun p -> NormalizedPackageName p.Name = NormalizedPackageName packageName) with
376382 | Some package ->
377383 package.ResolverStrategy,
378384 match package.VersionRequirement.Range with
379385 | OverrideAll(_) -> package.VersionRequirement
380- | _ -> versionRange
381- | None -> DependenciesFileParser.parseResolverStrategy version , versionRange
386+ | _ -> vr.VersionRequirement
387+ | None -> vr.ResolverStrategy , vr.VersionRequirement
382388
383389 this.AddAdditionalPackage( packageName, versionRequirement, resolverStrategy, settings)
384390
@@ -424,16 +430,15 @@ type DependenciesFile(fileName,options,sources,packages : PackageRequirement lis
424430 member this.UpdatePackageVersion ( packageName , version : string ) =
425431 let ( PackageName name ) = packageName
426432 if this.HasPackage( packageName) then
427- let versionRequirement = DependenciesFileParser.parseVersionRequirement ( version.Trim '!' )
428- let resolverStrategy = DependenciesFileParser.parseResolverStrategy version
433+ let vr = DependenciesFileParser.parseVersionString version
429434
430435 tracefn " Updating %s version to %s in %s " name version fileName
431436 let newLines =
432437 this.Lines |> Array.map ( fun l ->
433438 let name = packageName.ToString() .ToLower()
434439 if isPackageLine name l then
435440 let p = this.GetPackage packageName
436- DependenciesFileSerializer.packageString packageName versionRequirement resolverStrategy p.Settings
441+ DependenciesFileSerializer.packageString packageName vr.VersionRequirement vr.ResolverStrategy p.Settings
437442 else l)
438443
439444 DependenciesFile( DependenciesFileParser.parseDependenciesFile this.FileName newLines)
0 commit comments