Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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));
        }