예제 #1
0
        public UninstallWalker(IPackageRepository repository,
                               IDependentsResolver dependentsResolver,
                               FrameworkName targetFramework,
                               ILogger logger,
                               bool removeDependencies,
                               bool forceRemove) 
            : base(targetFramework)
        {
            if (dependentsResolver == null)
            {
                throw new ArgumentNullException("dependentsResolver");
            }
            if (repository == null)
            {
                throw new ArgumentNullException("repository");
            }
            if (logger == null)
            {
                throw new ArgumentNullException("logger");
            }

            Logger = logger;
            Repository = repository;
            DependentsResolver = dependentsResolver;
            Force = forceRemove;
            ThrowOnConflicts = true;
            Operations = new Stack<PackageOperation>();
            _removeDependencies = removeDependencies;
        }
예제 #2
0
        public UninstallWalker(IPackageRepository repository,
                               IDependentsResolver dependentsResolver,
                               FrameworkName targetFramework,
                               ILogger logger,
                               bool removeDependencies,
                               bool forceRemove)
            : base(targetFramework)
        {
            if (dependentsResolver == null)
            {
                throw new ArgumentNullException("dependentsResolver");
            }
            if (repository == null)
            {
                throw new ArgumentNullException("repository");
            }
            if (logger == null)
            {
                throw new ArgumentNullException("logger");
            }

            Logger             = logger;
            Repository         = repository;
            DependentsResolver = dependentsResolver;
            Force               = forceRemove;
            ThrowOnConflicts    = true;
            Operations          = new Stack <PackageOperation>();
            _removeDependencies = removeDependencies;
        }
예제 #3
0
        private void Uninstall(IPackage package, IDependentsResolver dependentsResolver, IPackageRepository repository)
        {
            // If this package isn't part of the current graph (i.e. hasn't been visited yet) and
            // is marked for removal, then do nothing. This is so we don't get unnecessary duplicates.
            if (!Marker.Contains(package) && _operations.Contains(package, PackageAction.Uninstall))
            {
                return;
            }

            // Uninstall the conflicting package. We set throw on conflicts to false since we've
            // already decided that there were no conflicts based on the above code.
            var resolver = new UninstallWalker(repository,
                                               dependentsResolver,
                                               TargetFramework,
                                               NullLogger.Instance,
                                               removeDependencies: !IgnoreDependencies,
                                               forceRemove: false)
            {
                ThrowOnConflicts = false
            };

            foreach (var operation in resolver.ResolveOperations(package))
            {
                _operations.AddOperation(operation);
            }
        }
예제 #4
0
        private void Uninstall(IPackage package, IDependentsResolver dependentsResolver, IPackageRepository repository)
        {
            // If we explicitly want to uninstall this package, then remove it from the retainment queue.
            _packagesToKeep.Remove(package);

            // If this package isn't part of the current graph (i.e. hasn't been visited yet) and
            // is marked for removal, then do nothing. This is so we don't get unnecessary duplicates.
            if (!Marker.Contains(package) && _operations.Contains(package, PackageAction.Uninstall))
            {
                return;
            }

            // Uninstall the conflicting package. We set throw on conflicts to false since we've
            // already decided that there were no conflicts based on the above code.
            var resolver = new UninstallWalker(
                repository,
                dependentsResolver,
                TargetFramework,
                NullLogger.Instance,
                removeDependencies: !IgnoreDependencies,
                forceRemove: false)
            {
                DisableWalkInfo  = this.DisableWalkInfo,
                ThrowOnConflicts = false
            };

            foreach (var operation in resolver.ResolveOperations(package))
            {
                // If the operation is Uninstall, we don't want to uninstall the package if it is in the "retainment" queue.
                if (operation.Action == PackageAction.Install || !_packagesToKeep.Contains(operation.Package))
                {
                    _operations.AddOperation(operation);
                }
            }
        }
예제 #5
0
 // this ctor is used for unit tests
 internal UninstallWalker(IPackageRepository repository,
                          IDependentsResolver dependentsResolver,
                          ILogger logger,
                          bool removeDependencies,
                          bool forceRemove)
     : this(repository, dependentsResolver, null, logger, removeDependencies, forceRemove)
 {
 }
예제 #6
0
 // this ctor is used for unit tests
 internal UninstallWalker(IPackageRepository repository,
                 IDependentsResolver dependentsResolver,
                 ILogger logger,
                 bool removeDependencies,
                 bool forceRemove) 
     : this(repository, dependentsResolver, null, logger, removeDependencies, forceRemove)
 {
 }
예제 #7
0
 public ProjectInstallWalker(IPackageRepository localRepository,
                             IPackageRepository sourceRepository,
                             IDependentsResolver dependentsResolver,
                             ILogger logger,
                             bool ignoreDependencies)
     : base(localRepository, sourceRepository, logger, ignoreDependencies)
 {
     _dependentsResolver = dependentsResolver;
 }
예제 #8
0
 public ProjectInstallWalker(IPackageRepository localRepository,
     IPackageRepository sourceRepository,
     IDependentsResolver dependentsResolver,
     ILogger logger,
     bool ignoreDependencies)
     : base(localRepository, sourceRepository, logger, ignoreDependencies)
 {
     _dependentsResolver = dependentsResolver;
 }
예제 #9
0
 // this ctor is used for unit tests
 internal UpdateWalker(IPackageRepository localRepository,
                     IDependencyResolver2 sourceRepository,
                     IDependentsResolver dependentsResolver,
                     IPackageConstraintProvider constraintProvider,
                     ILogger logger,
                     bool updateDependencies,
                     bool allowPrereleaseVersions)
     : this(localRepository, sourceRepository, dependentsResolver, constraintProvider, null, logger, updateDependencies, allowPrereleaseVersions)
 {
 }
 // this ctor is used for unit tests
 internal UpdateWalker(IPackageRepository localRepository,
                       IDependencyResolver2 sourceRepository,
                       IDependentsResolver dependentsResolver,
                       IPackageConstraintProvider constraintProvider,
                       ILogger logger,
                       bool updateDependencies,
                       bool allowPrereleaseVersions)
     : this(localRepository, sourceRepository, dependentsResolver, constraintProvider, null, logger, updateDependencies, allowPrereleaseVersions)
 {
 }
예제 #11
0
 public UpdateWalker(IPackageRepository localRepository,
                     IPackageRepository sourceRepository,
                     IDependentsResolver dependentsResolver,
                     IPackageConstraintProvider constraintProvider,
                     ILogger logger,
                     bool updateDependencies,
                     bool allowPrereleaseVersions)
     : base(localRepository, sourceRepository, constraintProvider, logger, !updateDependencies, allowPrereleaseVersions)
 {
     _dependentsResolver = dependentsResolver;
     AcceptedTargets = PackageTargets.All;
 }
 public UpdateWalker(IPackageRepository localRepository,
                     IDependencyResolver2 sourceRepository,
                     IDependentsResolver dependentsResolver,
                     IPackageConstraintProvider constraintProvider,
                     FrameworkName targetFramework,
                     ILogger logger,
                     bool updateDependencies,
                     bool allowPrereleaseVersions)
     : base(localRepository, sourceRepository, constraintProvider, targetFramework, logger, !updateDependencies, allowPrereleaseVersions, DependencyVersion.Lowest)
 {
     _dependentsResolver = dependentsResolver;
     AcceptedTargets     = PackageTargets.All;
 }
예제 #13
0
 private void Uninstall(IPackage package, IDependentsResolver dependentsResolver, IPackageRepository repository)
 {
     this._packagesToKeep.Remove(package);
     if (base.Marker.Contains(package) || !this._operations.Contains(package, PackageAction.Uninstall))
     {
         UninstallWalker walker1 = new UninstallWalker(repository, dependentsResolver, base.TargetFramework, NullLogger.Instance, !this.IgnoreDependencies, false);
         walker1.DisableWalkInfo  = this.DisableWalkInfo;
         walker1.ThrowOnConflicts = false;
         foreach (PackageOperation operation in walker1.ResolveOperations(package))
         {
             if ((operation.Action == PackageAction.Install) || !this._packagesToKeep.Contains(operation.Package))
             {
                 this._operations.AddOperation(operation);
             }
         }
     }
 }
예제 #14
0
 public UninstallWalker(IPackageRepository repository, IDependentsResolver dependentsResolver, FrameworkName targetFramework, ILogger logger, bool removeDependencies, bool forceRemove) : base(targetFramework)
 {
     this._forcedRemoved   = new Dictionary <IPackage, IEnumerable <IPackage> >((IEqualityComparer <IPackage>)PackageEqualityComparer.IdAndVersion);
     this._skippedPackages = new Dictionary <IPackage, IEnumerable <IPackage> >((IEqualityComparer <IPackage>)PackageEqualityComparer.IdAndVersion);
     if (dependentsResolver == null)
     {
         throw new ArgumentNullException("dependentsResolver");
     }
     if (repository == null)
     {
         throw new ArgumentNullException("repository");
     }
     if (logger == null)
     {
         throw new ArgumentNullException("logger");
     }
     this.Logger             = logger;
     this.Repository         = repository;
     this.DependentsResolver = dependentsResolver;
     this.Force               = forceRemove;
     this.ThrowOnConflicts    = true;
     this.Operations          = new Stack <PackageOperation>();
     this._removeDependencies = removeDependencies;
 }
예제 #15
0
        private void Uninstall(IPackage package, IDependentsResolver dependentsResolver, IPackageRepository repository)
        {
            // If this package isn't part of the current graph (i.e. hasn't been visited yet) and
            // is marked for removal, then do nothing. This is so we don't get unnecessary duplicates.
            if (!Marker.Contains(package) && _operations.Contains(package, PackageAction.Uninstall))
            {
                return;
            }

            // Uninstall the conflicting package. We set throw on conflicts to false since we've
            // already decided that there were no conflicts based on the above code.
            var resolver = new UninstallWalker(repository,
                                               dependentsResolver,
                                               TargetFramework,
                                               NullLogger.Instance,
                                               removeDependencies: !IgnoreDependencies,
                                               forceRemove: false) { ThrowOnConflicts = false };

            foreach (var operation in resolver.ResolveOperations(package))
            {
                _operations.AddOperation(operation);
            }
        }
예제 #16
0
 public ConflictResult(IPackage conflictingPackage, IPackageRepository repository, IDependentsResolver resolver)
 {
     this.Package            = conflictingPackage;
     this.Repository         = repository;
     this.DependentsResolver = resolver;
 }
예제 #17
0
        private void Uninstall(IPackage package, IDependentsResolver dependentsResolver, IPackageRepository repository)
        {
            // If we explicitly want to uninstall this package, then remove it from the retainment queue.
            _packagesToKeep.Remove(package);

            // If this package isn't part of the current graph (i.e. hasn't been visited yet) and
            // is marked for removal, then do nothing. This is so we don't get unnecessary duplicates.
            if (!Marker.Contains(package) && _operations.Contains(package, PackageAction.Uninstall))
            {
                return;
            }

            // Uninstall the conflicting package. We set throw on conflicts to false since we've
            // already decided that there were no conflicts based on the above code.
            var resolver = new UninstallWalker(
                repository,
                dependentsResolver,
                TargetFramework,
                NullLogger.Instance,
                removeDependencies: !IgnoreDependencies,
                forceRemove: false) 
                {
                    DisableWalkInfo = this.DisableWalkInfo,
                    ThrowOnConflicts = false 
                };

            foreach (var operation in resolver.ResolveOperations(package))
            {
                // If the operation is Uninstall, we don't want to uninstall the package if it is in the "retainment" queue.
                if (operation.Action == PackageAction.Install || !_packagesToKeep.Contains(operation.Package))
                {
                    _operations.AddOperation(operation);
                }
            }
        }
예제 #18
0
 public ConflictResult(IPackage conflictingPackage, IPackageRepository repository, IDependentsResolver resolver)
 {
     Package = conflictingPackage;
     Repository = repository;
     DependentsResolver = resolver;
 }