private PackageLockStatus CheckPackageLockStatus(PackagesLock currentLock, PackagesLock newLock) { foreach (var packageLockEntry in newLock) { if (currentLock.TryGetValue(packageLockEntry.Key, out var dependencies)) { if (!packageLockEntry.Value.ScrambledEquals(dependencies)) { return (PackageLockStatus.Changed); //something seems fishy as the dependencies don't match even if the package versions are equal } } else if (currentLock.Any(x => string.Equals(x.Key.Id, packageLockEntry.Key.Id, StringComparison.OrdinalIgnoreCase))) { //version changed return(PackageLockStatus.Changed); } else { return(PackageLockStatus.PackagesAddedOrRemoved); } } if (currentLock.Any(x => !newLock.Any(y => string.Equals(y.Key.Id, x.Key.Id, StringComparison.OrdinalIgnoreCase)))) { return(PackageLockStatus.PackagesAddedOrRemoved); } //we don't really care if packages were removed return(PackageLockStatus.Equal); }
public async Task <PackageLockContext> Load(PackagesLock packagesLock) { if (packagesLock?.Any() != true) { return(new PackageLockContext(_catalog)); } var packages = await _catalog.Load(packagesLock); return(new PackageLockContext(packages, _packagesRegistrar, _catalog)); }