Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Linting
  • Loading branch information
mrinaldi committed Oct 15, 2015
commit 8723884020fdcb1a91b6a9fdd4f4c1ffb7625a3c
156 changes: 77 additions & 79 deletions src/Paket.Core/UpdateProcess.fs
Original file line number Diff line number Diff line change
Expand Up @@ -53,86 +53,84 @@ let selectiveUpdate force getSha1 getSortedVersionsF getPackageDetailsF (lockFil
| SemVerUpdateMode.KeepPatch -> processFile (fun v -> sprintf "~> %d.%d.%d" v.Major v.Minor v.Patch + formatPrerelease v)

let getVersionsF,groupsToUpdate =
match updateMode with
| UpdateAll ->
let preferredVersions = DependencyChangeDetection.GetPreferredNuGetVersions lockFile

let changes =
lockFile.GetGroupedResolution()
|> Seq.map (fun k -> k.Key)
|> Set.ofSeq

(getPreferredVersionsF preferredVersions changes),dependenciesFile.Groups
| UpdateGroup groupName ->
let preferredVersions = DependencyChangeDetection.GetPreferredNuGetVersions lockFile

let changes =
lockFile.GetGroupedResolution()
|> Seq.map (fun k -> k.Key)
|> Seq.filter (fun (g,_) -> g = groupName)
|> Set.ofSeq

let groups =
dependenciesFile.Groups
|> Map.filter (fun k _ -> k = groupName)

(getPreferredVersionsF preferredVersions changes),groups
| Install ->
let nuGetChanges = DependencyChangeDetection.findNuGetChangesInDependenciesFile(dependenciesFile,lockFile)
let nuGetChangesPerGroup =
nuGetChanges
|> Seq.groupBy fst
|> Map.ofSeq

let remoteFileChanges = DependencyChangeDetection.findRemoteFileChangesInDependenciesFile(dependenciesFile,lockFile)
let remoteFileChangesPerGroup =
remoteFileChanges
|> Seq.groupBy fst
|> Map.ofSeq

let preferredVersions = DependencyChangeDetection.GetPreferredNuGetVersions lockFile

let hasNuGetChanges groupName =
match nuGetChangesPerGroup |> Map.tryFind groupName with
| None -> false
| Some x -> Seq.isEmpty x |> not

let hasRemoteFileChanges groupName =
match remoteFileChangesPerGroup |> Map.tryFind groupName with
| None -> false
| Some x -> Seq.isEmpty x |> not

let hasChangedSettings groupName =
match dependenciesFile.Groups |> Map.tryFind groupName with
| None -> true
| Some dependenciesFileGroup ->
match lockFile.Groups |> Map.tryFind groupName with
let changes,groups =
match updateMode with
| UpdateAll ->
let changes =
lockFile.GetGroupedResolution()
|> Seq.map (fun k -> k.Key)
|> Set.ofSeq

changes,dependenciesFile.Groups
| UpdateGroup groupName ->
let changes =
lockFile.GetGroupedResolution()
|> Seq.map (fun k -> k.Key)
|> Seq.filter (fun (g,_) -> g = groupName)
|> Set.ofSeq

let groups =
dependenciesFile.Groups
|> Map.filter (fun k _ -> k = groupName)

changes,groups
| Install ->
let nuGetChanges = DependencyChangeDetection.findNuGetChangesInDependenciesFile(dependenciesFile,lockFile)
let nuGetChangesPerGroup =
nuGetChanges
|> Seq.groupBy fst
|> Map.ofSeq

let remoteFileChanges = DependencyChangeDetection.findRemoteFileChangesInDependenciesFile(dependenciesFile,lockFile)
let remoteFileChangesPerGroup =
remoteFileChanges
|> Seq.groupBy fst
|> Map.ofSeq

let hasNuGetChanges groupName =
match nuGetChangesPerGroup |> Map.tryFind groupName with
| None -> false
| Some x -> Seq.isEmpty x |> not

let hasRemoteFileChanges groupName =
match remoteFileChangesPerGroup |> Map.tryFind groupName with
| None -> false
| Some x -> Seq.isEmpty x |> not

let hasChangedSettings groupName =
match dependenciesFile.Groups |> Map.tryFind groupName with
| None -> true
| Some lockFileGroup -> dependenciesFileGroup.Options <> lockFileGroup.Options

let hasChanges groupName _ =
let hasChanges = hasChangedSettings groupName || hasNuGetChanges groupName || hasRemoteFileChanges groupName
if not hasChanges then
tracefn "Skipping resolver for group %O since it is already up-to-date" groupName
hasChanges

let groups =
dependenciesFile.Groups
|> Map.filter hasChanges

(getPreferredVersionsF preferredVersions nuGetChanges),groups
| UpdatePackage(groupName,packageName) ->
let changes =
lockFile.GetAllNormalizedDependenciesOf(groupName,packageName)
|> Set.ofSeq

let preferredVersions = DependencyChangeDetection.GetPreferredNuGetVersions lockFile

let groups =
dependenciesFile.Groups
|> Map.filter (fun key _ -> key = groupName)

(getPreferredVersionsF preferredVersions changes),groups
| Some dependenciesFileGroup ->
match lockFile.Groups |> Map.tryFind groupName with
| None -> true
| Some lockFileGroup -> dependenciesFileGroup.Options <> lockFileGroup.Options

let hasChanges groupName _ =
let hasChanges = hasChangedSettings groupName || hasNuGetChanges groupName || hasRemoteFileChanges groupName
if not hasChanges then
tracefn "Skipping resolver for group %O since it is already up-to-date" groupName
hasChanges

let groups =
dependenciesFile.Groups
|> Map.filter hasChanges

nuGetChanges,groups
| UpdatePackage(groupName,packageName) ->
let changes =
lockFile.GetAllNormalizedDependenciesOf(groupName,packageName)
|> Set.ofSeq

let groups =
dependenciesFile.Groups
|> Map.filter (fun key _ -> key = groupName)

changes,groups

let preferredVersions =
DependencyChangeDetection.GetPreferredNuGetVersions lockFile
|> getPreferredVersionsF
preferredVersions changes,groups

let resolution = dependenciesFile.Resolve(force, getSha1, getVersionsF, getPackageDetailsF, groupsToUpdate, updateMode)

Expand Down