Skip to content

Commit

Permalink
Bump version to 7.0.0-alpha013
Browse files Browse the repository at this point in the history
  • Loading branch information
forki committed Feb 8, 2022
1 parent 6ee8f54 commit 12bb526
Show file tree
Hide file tree
Showing 6 changed files with 89 additions and 26 deletions.
2 changes: 1 addition & 1 deletion RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#### 7.0.0-alpha011 - 2022-12-07
#### 7.0.0-alpha013 - 2022-12-08
* Support as .NET 6.0 tool
* Auto-Restore after paket install an paket update

Expand Down
6 changes: 3 additions & 3 deletions integrationtests/Paket.IntegrationTests/PaketCoreSpecs.fs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
module Paket.IntegrationTests.PaketCoreSpecs

open Fake
open System
open System
open NUnit.Framework
open FsUnit
open System
Expand All @@ -26,7 +26,7 @@ let ``#1251 full installer demo``() =
// get from references file
[GroupName "Main",PackageName "FAKE"
GroupName "Main",PackageName "FSharp.Formatting"]
let lockFile,_,_ = UpdateProcess.SelectiveUpdate(dependenciesFile, alternativeProjectRoot, PackageResolver.UpdateMode.Install, SemVerUpdateMode.NoRestriction, force)
let lockFile,_,_,_ = UpdateProcess.SelectiveUpdate(dependenciesFile, alternativeProjectRoot, PackageResolver.UpdateMode.Install, SemVerUpdateMode.NoRestriction, force)
let model = Paket.InstallProcess.CreateModel(alternativeProjectRoot, Path.GetDirectoryName dependenciesFile.FileName, force, dependenciesFile, lockFile, Set.ofSeq packagesToInstall, Map.empty) |> Map.ofArray

lockFile.Groups.[Constants.MainDependencyGroup].Resolution.[PackageName "FAKE"].Version
Expand All @@ -44,7 +44,7 @@ let ``#1251 install FSharp.Collections.ParallelSeq``() =
// get from references file
[GroupName "Main",PackageName "FSharp.Collections.ParallelSeq"]

let lockFile,_,_ = UpdateProcess.SelectiveUpdate(dependenciesFile, alternativeProjectRoot, PackageResolver.UpdateMode.Install, SemVerUpdateMode.NoRestriction, force)
let lockFile,_,_,_ = UpdateProcess.SelectiveUpdate(dependenciesFile, alternativeProjectRoot, PackageResolver.UpdateMode.Install, SemVerUpdateMode.NoRestriction, force)

lockFile.Groups.[Constants.MainDependencyGroup].Resolution.[PackageName "FSharp.Collections.ParallelSeq"].Version
|> shouldBeGreaterThan (SemVer.Parse "1.0.1")
Expand Down
41 changes: 36 additions & 5 deletions src/Paket.Core/Installation/InstallProcess.fs
Original file line number Diff line number Diff line change
Expand Up @@ -347,7 +347,7 @@ let installForDotnetSDK root (project:ProjectFile) =
project.AddImportForPaketTargets(relativePath)

/// Installs all packages from the lock file.
let InstallIntoProjects(options : InstallerOptions, forceTouch, dependenciesFile, lockFile : LockFile, projectsAndReferences : (ProjectFile * ReferencesFile) list, updatedGroups) =
let InstallIntoProjects(options : InstallerOptions, forceTouch, dependenciesFile, lockFile : LockFile, projectsAndReferences : (ProjectFile * ReferencesFile) list, updatedGroups, touchedPackages:((GroupName * PackageName) list) option) =
let packagesToInstall =
if options.OnlyReferenced then
projectsAndReferences
Expand All @@ -361,6 +361,7 @@ let InstallIntoProjects(options : InstallerOptions, forceTouch, dependenciesFile
|> Seq.map (fun kv -> kv.Key)
|> Set

let touchedProjects = System.Collections.Generic.HashSet<string>()
tracefn "Created dependency graph (%d packages in total)" packagesToInstall.Count
let root = Path.GetDirectoryName lockFile.FileName
let model = CreateModel(options.AlternativeProjectRoot, root, options.Force, dependenciesFile, lockFile, packagesToInstall, updatedGroups) |> Map.ofArray
Expand All @@ -370,7 +371,6 @@ let InstallIntoProjects(options : InstallerOptions, forceTouch, dependenciesFile
let prefix = dependenciesFile.Directory.Length + 1
let norm (s:string) = (s.Substring prefix).Replace('\\', '/')


if projectsAndReferences.Length > 0 then
verbosefn " - Installing to %d projects" projectsAndReferences.Length

Expand Down Expand Up @@ -498,6 +498,18 @@ let InstallIntoProjects(options : InstallerOptions, forceTouch, dependenciesFile
else // start the installation process
if toolsVersion >= 15.0 then
installForDotnetSDK root project
if forceTouch then
touchedProjects.Add project.FileName |> ignore
else
match touchedPackages with
| Some touchedPackages ->
let packageInstalled =
touchedPackages
|> Seq.exists project.HasPackageInstalled
if packageInstalled then
touchedProjects.Add project.FileName |> ignore
| _ ->
touchedProjects.Add project.FileName |> ignore
else
project.UpdateReferences(model, directDependencies, usedPackages)

Expand Down Expand Up @@ -589,12 +601,31 @@ let InstallIntoProjects(options : InstallerOptions, forceTouch, dependenciesFile
// Lets see if users report issues
Paket.RestoreProcess.writeRestoreCache restoreCacheFile { PackagesDownloadedHash = hash; ProjectsRestoredHash = hash }
Paket.RestoreProcess.writeGitignore restoreCacheFile
()

for project in touchedProjects do
let di = (FileInfo project).Directory
for objDir in Directory.EnumerateDirectories(di.FullName,"obj", SearchOption.AllDirectories) do
for file in Directory.EnumerateFiles(objDir,"project.assets.json", SearchOption.AllDirectories) do
try
File.Delete file
with
| _ -> ()

for file in Directory.EnumerateFiles(objDir,"*.references", SearchOption.AllDirectories) do
try
File.Delete file
with
| _ -> ()

for file in Directory.EnumerateFiles(objDir,"*.paket.*", SearchOption.AllDirectories) do
try
File.Delete file
with
| _ -> ()

/// Installs all packages from the lock file.
let Install(options : InstallerOptions, forceTouch, dependenciesFile, lockFile : LockFile, updatedGroups) =
let Install(options : InstallerOptions, forceTouch, dependenciesFile, lockFile : LockFile, updatedGroups, touchedPackages) =
let root = FileInfo(lockFile.FileName).Directory.FullName

let projects = RestoreProcess.findAllReferencesFiles root |> returnOrFail
InstallIntoProjects(options, forceTouch, dependenciesFile, lockFile, projects, updatedGroups)
InstallIntoProjects(options, forceTouch, dependenciesFile, lockFile, projects, updatedGroups,touchedPackages)
38 changes: 35 additions & 3 deletions src/Paket.Core/Installation/UpdateProcess.fs
Original file line number Diff line number Diff line change
Expand Up @@ -229,19 +229,51 @@ let SelectiveUpdate(dependenciesFile : DependenciesFile, alternativeProjectRoot,
updateMode
semVerUpdateMode
let hasChanged = lockFile.Save()
lockFile,hasChanged,updatedGroups
let touchedPackages =
[
for group1 in oldLockFile.Groups do
for package1 in group1.Value.Resolution do
match lockFile.Groups |> Map.tryFind group1.Key with
| None -> group1.Key, package1.Key
| Some group2 ->
match group2.Resolution |> Map.tryFind package1.Key with
| Some package2 when package2.Version <> package1.Value.Version ->
()
| _ ->
group1.Key, package1.Key
for group1 in lockFile.Groups do
for package1 in group1.Value.Resolution do
match oldLockFile.Groups |> Map.tryFind group1.Key with
| None -> group1.Key, package1.Key
| Some group2 ->
match group2.Resolution |> Map.tryFind package1.Key with
| Some package2 when package2.Version <> package1.Value.Version ->
()
| _ ->
group1.Key, package1.Key
]
|> List.distinct
|> List.sort

if not (List.isEmpty touchedPackages) then
tracefn "Updated packages:"
for g,packages in touchedPackages |> List.groupBy fst do
tracefn " Group: %O" g
for p in packages do
tracefn " - %O" p
lockFile,hasChanged,updatedGroups,touchedPackages

/// Smart install command
let SmartInstall(dependenciesFile:DependenciesFile, updateMode, options : UpdaterOptions) =
let lockFile,hasChanged,updatedGroups = SelectiveUpdate(dependenciesFile, options.Common.AlternativeProjectRoot, updateMode, options.Common.SemVerUpdateMode, options.Common.Force)
let lockFile,hasChanged,updatedGroups,touchedPackages = SelectiveUpdate(dependenciesFile, options.Common.AlternativeProjectRoot, updateMode, options.Common.SemVerUpdateMode, options.Common.Force)

let root = Path.GetDirectoryName dependenciesFile.FileName
let projectsAndReferences = RestoreProcess.findAllReferencesFiles root |> returnOrFail

if not options.NoInstall then
tracefn "Installing into projects:"
let forceTouch = hasChanged && options.Common.TouchAffectedRefs
InstallProcess.InstallIntoProjects(options.Common, forceTouch, dependenciesFile, lockFile, projectsAndReferences, updatedGroups)
InstallProcess.InstallIntoProjects(options.Common, forceTouch, dependenciesFile, lockFile, projectsAndReferences, updatedGroups, Some touchedPackages)
GarbageCollection.CleanUp(dependenciesFile, lockFile)

let shouldGenerateScripts =
Expand Down
16 changes: 8 additions & 8 deletions src/Paket.Core/PackageManagement/AddProcess.fs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ open System
open System.IO
open Paket.Domain
open Paket.Logging

let private matchGroupName groupName =
match groupName with
| None -> Constants.MainDependencyGroup
Expand Down Expand Up @@ -60,19 +60,19 @@ let private add installToProjects addToProjectsF dependenciesFileName groupName
| None -> ()
| Some lockFile ->
let touchedGroups = Map.empty.Add(groupName,"")
InstallProcess.Install(options, false, dependenciesFile, lockFile, touchedGroups)
InstallProcess.Install(options, false, dependenciesFile, lockFile, touchedGroups, Some [groupName, package])
GarbageCollection.CleanUp(dependenciesFile, lockFile)
else
let updateMode = PackageResolver.UpdateMode.InstallGroup groupName
let alternativeProjectRoot = None
let lockFile,hasChanged,updatedGroups = UpdateProcess.SelectiveUpdate(dependenciesFile, alternativeProjectRoot, updateMode, options.SemVerUpdateMode, options.Force)
let lockFile,hasChanged,updatedGroups,updatedPackages = UpdateProcess.SelectiveUpdate(dependenciesFile, alternativeProjectRoot, updateMode, options.SemVerUpdateMode, options.Force)

dependenciesFile.Save()
addToProjectsF projects groupName package

if installAfter then
let forceTouch = hasChanged && options.TouchAffectedRefs
InstallProcess.Install(options, forceTouch, dependenciesFile, lockFile, updatedGroups)
InstallProcess.Install(options, forceTouch, dependenciesFile, lockFile, updatedGroups, Some updatedPackages)
GarbageCollection.CleanUp(dependenciesFile, lockFile)

lockFileName.Refresh()
Expand Down Expand Up @@ -125,9 +125,9 @@ let AddGithub(dependenciesFileName, groupName, repository, file, version, option

let updateMode = PackageResolver.UpdateMode.InstallGroup group
let alternativeProjectRoot = None
let lockFile,_,_ = UpdateProcess.SelectiveUpdate(dependenciesFile, alternativeProjectRoot, updateMode, options.SemVerUpdateMode, options.Force)
let lockFile,_,_,_ = UpdateProcess.SelectiveUpdate(dependenciesFile, alternativeProjectRoot, updateMode, options.SemVerUpdateMode, options.Force)

InstallProcess.Install(options, false, dependenciesFile, lockFile, Map.empty)
InstallProcess.Install(options, false, dependenciesFile, lockFile, Map.empty, None)
GarbageCollection.CleanUp(dependenciesFile, lockFile)

let AddGit(dependenciesFileName, groupName, repository, version, options) =
Expand All @@ -142,7 +142,7 @@ let AddGit(dependenciesFileName, groupName, repository, version, options) =

let updateMode = PackageResolver.UpdateMode.InstallGroup group
let alternativeProjectRoot = None
let lockFile,_,_ = UpdateProcess.SelectiveUpdate(dependenciesFile, alternativeProjectRoot, updateMode, options.SemVerUpdateMode, options.Force)
let lockFile,_,_,_ = UpdateProcess.SelectiveUpdate(dependenciesFile, alternativeProjectRoot, updateMode, options.SemVerUpdateMode, options.Force)

InstallProcess.Install(options, false, dependenciesFile, lockFile, Map.empty)
InstallProcess.Install(options, false, dependenciesFile, lockFile, Map.empty, None)
GarbageCollection.CleanUp(dependenciesFile, lockFile)
12 changes: 6 additions & 6 deletions src/Paket.Core/PackageManagement/RemoveProcess.fs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ open System.IO
open Paket.Domain
open Paket.Logging
open InstallProcess

let private removePackageFromProject (project : ProjectFile) groupName package =
project.FindOrCreateReferencesFile()
.RemoveNuGetReference(groupName,package)
Expand Down Expand Up @@ -35,18 +35,18 @@ let private remove removeFromProjects (dependenciesFileName: string) alternative
let lockFileName = DependenciesFile.FindLockfile dependenciesFileName
LockFile.LoadFrom(lockFileName.FullName)

let dependenciesFile,lockFile,_ =
let dependenciesFile,lockFile,_,updatedPackages =
let exisitingDependenciesFile = DependenciesFile.ReadFromFile dependenciesFileName
if stillInstalled then exisitingDependenciesFile,oldLockFile,false else
if stillInstalled then exisitingDependenciesFile,oldLockFile,false,None else
let dependenciesFile = exisitingDependenciesFile.Remove(groupName,package)
dependenciesFile.Save()

let lockFile,hasChanged,_ = UpdateProcess.SelectiveUpdate(dependenciesFile, alternativeProjectRoot, PackageResolver.UpdateMode.Install,SemVerUpdateMode.NoRestriction,force)
dependenciesFile,lockFile,hasChanged
let lockFile,hasChanged,_,updatedPackages = UpdateProcess.SelectiveUpdate(dependenciesFile, alternativeProjectRoot, PackageResolver.UpdateMode.Install,SemVerUpdateMode.NoRestriction,force)
dependenciesFile,lockFile,hasChanged,Some updatedPackages

if installAfter then
let updatedGroups = Map.add groupName 0 Map.empty
InstallProcess.Install(InstallerOptions.CreateLegacyOptions(force, Requirements.BindingRedirectsSettings.Off, false, false, SemVerUpdateMode.NoRestriction, false, false, [], [], None), false, dependenciesFile, lockFile, updatedGroups)
InstallProcess.Install(InstallerOptions.CreateLegacyOptions(force, Requirements.BindingRedirectsSettings.Off, false, false, SemVerUpdateMode.NoRestriction, false, false, [], [], None), false, dependenciesFile, lockFile, updatedGroups, updatedPackages)
GarbageCollection.CleanUp(dependenciesFile, lockFile)
installAfter

Expand Down

0 comments on commit 12bb526

Please sign in to comment.