public void ClearPackageErrors(IPackage package)
            {
                var packagePreUpdate = package.Clone();

                package.ClearErrors();
                onPackagesChanged?.Invoke(k_EmptyList, k_EmptyList, new[] { packagePreUpdate }, new[] { package });
            }
예제 #2
0
 /// <inheritdoc />
 public void Install(IRepositoryInstalled repository, IPackage package)
 {
     if (!IsInstalled(repository, package))
     {
         repository.AddPackage((IPackage)package.Clone());
     }
 }
            public void AddPackageError(IPackage package, Error error)
            {
                var packagePreUpdate = package.Clone();

                package.AddError(error);
                onPackagesChanged?.Invoke(k_EmptyList, k_EmptyList, new[] { packagePreUpdate }, new[] { package });
            }
예제 #4
0
        /// <inheritdoc />
        public virtual void Update(IRepositoryInstalled repository, IPackage initial, IPackage target)
        {
            if (!repository.HasPackage(initial))
            {
                throw new InvalidArgumentException($"Package is not installed: {initial}");
            }

            installerBinary.Remove(initial);
            UpdateLibrary(initial, target);
            installerBinary.Install(target, GetInstallPath(target));

            repository.RemovePackage(initial);
            if (!repository.HasPackage(target))
            {
                repository.AddPackage((IPackage)target.Clone());
            }
        }
예제 #5
0
        /// <inheritdoc />
        public void Update(IRepositoryInstalled repository, IPackage initial, IPackage target)
        {
            if (!repository.HasPackage(initial))
            {
                throw new InvalidArgumentException($"Package is not installed: {initial}");
            }

            var name       = target.GetName();
            var from       = initial.GetVersionPrettyFull();
            var to         = target.GetVersionPrettyFull();
            var actionName = VersionParser.IsUpgrade(initial.GetVersion(), target.GetVersion()) ? "Updating" : "Downgrading";

            io.WriteError($"  - {actionName} <info>{name}</info> (<comment>{from}</comment> => <comment>{to}</comment>)");

            repository.RemovePackage(initial);
            repository.AddPackage((IPackage)target.Clone());
        }
예제 #6
0
        /// <inheritdoc />
        public virtual void Install(IRepositoryInstalled repository, IPackage package)
        {
            var installPath = GetInstallPath(package);

            // remove the binaries if it appears the package files are missing.
            if (!fileSystem.Exists(installPath, FileSystemOptions.Directory) &&
                repository.HasPackage(package))
            {
                installerBinary.Remove(package);
            }

            InstallLibaray(package);
            installerBinary.Install(package, installPath);

            if (!repository.HasPackage(package))
            {
                repository.AddPackage((IPackage)package.Clone());
            }
        }
예제 #7
0
 /// <summary>
 /// Erstellt einen neuen Log Eintrag.
 /// </summary>
 /// <param name="package">Das zu loggende Paket.</param>
 /// <param name="origin">Die Herkunft des Paketes.</param>
 /// <param name="timeStamp">Der Zeitpunkt des Log Eintrages.</param>
 public PackageLogEntry(IPackage package, PackageOrigin origin, DateTime timeStamp)
 {
     Package = package.Clone().hideFields();
     Origin = origin;
     TimeStamp = timeStamp;
 }
예제 #8
0
 /// <inheritdoc />
 public void Install(IRepositoryInstalled repository, IPackage package)
 {
     io.WriteError($"  - Installing <info>{package.GetName()}</info> (<comment>{package.GetVersionPrettyFull()}</comment>)");
     repository.AddPackage((IPackage)package.Clone());
 }