public IEnumerable <IRepository> GetRepositories(PackageOperationType packageOperationType)
        {
            //todo get repositories based on packageOperationType
            //currenly returns all available repositories
            //create package metadata provider from context
            using (var context = _repositoryContextService.AcquireContext())
            {
                var projects = _extensibleProjectLocator.GetAllExtensibleProjects();

                var localRepos = _projectManager.AsLocalRepositories(projects);

                var repos = context == SourceContext.EmptyContext ? new List <SourceRepository>()
                    : context.Repositories ?? context.PackageSources.Select(src => _repositoryContextService.GetRepository(src));

                var repositoryModelList = new List <IRepository>();

                //wrap all source repository object in repository model
                repositoryModelList.AddRange(
                    repos.Select(
                        source => CreateModelRepositoryFromSourceRepository(source)
                        ));

                repositoryModelList.AddRange(
                    localRepos.Select(
                        source => CreateModelRepositoryFromSourceRepository(source)

                        ));

                return(repositoryModelList);
            }
        }
Example #2
0
        public void Execute(PackageOperationType operationType, IPackageDetails packageDetails, IRepository sourceRepository = null, bool allowedPrerelease = false)
        {
            Argument.IsNotNull(() => packageDetails);

            using (_pleaseWaitService.WaitingScope())
            {
                using (_packageOperationContextService.UseOperationContext(operationType, packageDetails))
                {
                    _packageOperationContextService.CurrentContext.Repository = sourceRepository;
                    switch (operationType)
                    {
                    case PackageOperationType.Uninstall:
                        _packageOperationService.UninstallPackage(packageDetails);
                        break;

                    case PackageOperationType.Install:
                        _packageOperationService.InstallPackage(packageDetails, allowedPrerelease);
                        break;

                    case PackageOperationType.Update:
                        _packageOperationService.UpdatePackages(packageDetails, allowedPrerelease);
                        break;
                    }
                }
            }

            packageDetails.IsInstalled = null;
        }
Example #3
0
        private RepositoryCategory CreateRepositoryCategory(PackageOperationType packageOperationType)
        {
            var repoCategory = new RepositoryCategory();

            switch (packageOperationType)
            {
            case PackageOperationType.Install:
                repoCategory.Name = RepositoryCategoryName.Online;
                break;

            case PackageOperationType.Uninstall:
                repoCategory.Name = RepositoryCategoryName.Installed;
                break;

            case PackageOperationType.Update:
                repoCategory.Name = RepositoryCategoryName.Update;
                break;
            }

            foreach (var repository in _repositoryService.GetRepositories(packageOperationType))
            {
                repoCategory.Repositories.Add(repository);
            }

            return(repoCategory);
        }
        internal PackageOperationBatchEventArgs(PackageOperationType operationType, params IPackageDetails[] packages)
        {
            Argument.IsNotNullOrEmptyArray(() => packages);

            Packages = packages;
            OperationType = operationType;
        }
Example #5
0
        public IEnumerable <IRepository> GetRepositories(PackageOperationType packageOperationType)
        {
            var result = new List <IRepository>();

            switch (packageOperationType)
            {
            case PackageOperationType.Uninstall:
                result.Add(LocalRepository);
                break;

            case PackageOperationType.Install:
                result.Add(GetSourceAggregateRepository());
                var remoteRepositories = GetSourceRepositories();
                result.AddRange(remoteRepositories);
                break;

            case PackageOperationType.Update:
                result.Add(GetUpdateAggeregateRepository());
                var updateRepositories = GetUpdateRepositories();
                result.AddRange(updateRepositories);
                break;
            }

            return(result);
        }
 public IDisposable UseOperationContext(PackageOperationType operationType, params IPackageDetails[] packages)
 {
     var context = _typeFactory.CreateInstance<TemporaryFileSystemContext>();
     return new DisposableToken<PackageOperationContext>(new PackageOperationContext {OperationType = operationType, Packages = packages, FileSystemContext = context},
         token => ApplyOperationContext(token.Instance),
         token => CloseCurrentOperationContext(token.Instance));
 }
        private RepositoryCategory CreateRepositoryCategory(PackageOperationType packageOperationType)
        {
            var repoCategory = new RepositoryCategory();

            switch (packageOperationType)
            {
                case PackageOperationType.Install:
                    repoCategory.Name = RepositoryCategoryName.Online;
                    break;

                case PackageOperationType.Uninstall:
                    repoCategory.Name = RepositoryCategoryName.Installed;
                    break;

                case PackageOperationType.Update:
                    repoCategory.Name = RepositoryCategoryName.Update;
                    break;
            }

            foreach (var repository in _repositoryService.GetRepositories(packageOperationType))
            {
                repoCategory.Repositories.Add(repository);
            }

            return repoCategory;
        }
Example #8
0
        internal PackageOperationBatchEventArgs(PackageOperationType operationType, params IPackageDetails[] packages)
        {
            Argument.IsNotNullOrEmptyArray(() => packages);

            Packages      = packages;
            OperationType = operationType;
        }
        public void Execute(PackageOperationType operationType, IPackageDetails packageDetails, IRepository sourceRepository = null, bool allowedPrerelease = false)
        {
            Argument.IsNotNull(() => packageDetails);

            using (_pleaseWaitService.WaitingScope())
            {
                using (_packageOperationContextService.UseOperationContext(operationType, packageDetails))
                {
                    _packageOperationContextService.CurrentContext.Repository = sourceRepository;
                    switch (operationType)
                    {
                        case PackageOperationType.Uninstall:
                            _packageOperationService.UninstallPackage(packageDetails);
                            break;

                        case PackageOperationType.Install:
                            _packageOperationService.InstallPackage(packageDetails, allowedPrerelease);
                            break;

                        case PackageOperationType.Update:
                            _packageOperationService.UpdatePackages(packageDetails, allowedPrerelease);
                            break;
                    }
                }
            }

            packageDetails.IsInstalled = null;
        }
        public IEnumerable<IRepository> GetRepositories(PackageOperationType packageOperationType)
        {
            var packageSources = GetPackageSources();
            var result = new List<IRepository>();
            switch (packageOperationType)
            {
                case PackageOperationType.Uninstall:
                    result.Add(LocalRepository);
                    break;

                case PackageOperationType.Install:
                    result.Add(GetSourceAggregateRepository());
                    var remoteRepositories = GetSourceRepositories();
                    result.AddRange(remoteRepositories);
                    break;

                case PackageOperationType.Update:
                    result.Add(GetUpdateAggeregateRepository());
                    var updateRepositories = GetUpdateRepositories();
                    result.AddRange(updateRepositories);
                    break;
            }

            return result;
        }
        public void NotifyOperationFinished(string installPath, PackageOperationType operationType, IPackageDetails packageDetails)
        {
            Argument.IsNotNull(() => packageDetails);

            //UnsubscribeFromDownloadProgress(packageDetails);

            OperationFinished.SafeInvoke(this, new PackageOperationEventArgs(packageDetails, installPath, operationType));
        }
        public void NotifyOperationStarting(string installPath, PackageOperationType operationType, IPackageDetails packageDetails)
        {
            Argument.IsNotNull(() => packageDetails);

            //SubscribeToDownloadProgress(packageDetails);

            OperationStarting.SafeInvoke(this, new PackageOperationEventArgs(packageDetails, installPath, operationType));
        }
        internal PackageOperationEventArgs(IPackageDetails packageDetails, string installPath, PackageOperationType packageOperationType)
        {
            Argument.IsNotNull(() => packageDetails);

            PackageDetails = packageDetails;
            InstallPath = installPath;
            PackageOperationType = packageOperationType;
        }
        public void NotifyOperationStarting(string installPath, PackageOperationType operationType, IPackageDetails packageDetails)
        {
            Argument.IsNotNull(() => packageDetails);

            //SubscribeToDownloadProgress(packageDetails);

            OperationStarting.SafeInvoke(this, new PackageOperationEventArgs(packageDetails, installPath, operationType));
        }
        internal PackageOperationEventArgs(IPackageDetails packageDetails, string installPath, PackageOperationType packageOperationType)
        {
            Argument.IsNotNull(() => packageDetails);

            PackageDetails       = packageDetails;
            InstallPath          = installPath;
            PackageOperationType = packageOperationType;
        }
        public void NotifyOperationFinished(string installPath, PackageOperationType operationType, IPackageDetails packageDetails)
        {
            Argument.IsNotNull(() => packageDetails);

            //UnsubscribeFromDownloadProgress(packageDetails);

            OperationFinished.SafeInvoke(this, new PackageOperationEventArgs(packageDetails, installPath, operationType));
        }
Example #17
0
        public IDisposable UseOperationContext(PackageOperationType operationType, params IPackageDetails[] packages)
        {
            var context = _typeFactory.CreateInstance <TemporaryFileSystemContext>();

            return(new DisposableToken <PackageOperationContext>(new PackageOperationContext {
                OperationType = operationType, Packages = packages, FileSystemContext = context
            },
                                                                 token => ApplyOperationContext(token.Instance),
                                                                 token => CloseCurrentOperationContext(token.Instance)));
        }
Example #18
0
        public void ShowPackagesBatch(IEnumerable <IPackageDetails> packageDetails, PackageOperationType operationType)
        {
            var packagesBatch = new PackagesBatch {
                OperationType = PackageOperationType.Update
            };

            packagesBatch.PackageList.AddRange(packageDetails);

            _dispatcherService.Invoke(() => _uiVisualizerService.ShowDialogAsync <PackageBatchViewModel>(packagesBatch), true);
        }
        public void ShowPackagesBatch(IEnumerable<IPackageDetails> packageDetails, PackageOperationType operationType)
        {
            var packagesBatch = new PackagesBatch
            {
                OperationType = PackageOperationType.Update
            };

            ((ICollection<IPackageDetails>)packagesBatch.PackageList).AddRange(packageDetails);

            _dispatcherService.Invoke(() => _uiVisualizerService.ShowDialogAsync<PackageBatchViewModel>(packagesBatch), true);
        }
        public static IPackageDetails Create(PackageOperationType operationType, IPackageSearchMetadata versionMetadata, PackageIdentity packageIdentity, bool?isLastVersion)
        {
            var packageDetails = new PackageDetails(versionMetadata, packageIdentity, isLastVersion ?? false);

            if (operationType != PackageOperationType.Install)
            {
                packageDetails.IsInstalled = true;
            }

            return(packageDetails);
        }
Example #21
0
        public bool IsRefreshRequired(PackageOperationType operationType)
        {
            switch (operationType)
            {
            case PackageOperationType.Uninstall:
                return(true);

            case PackageOperationType.Install:
                return(false);

            case PackageOperationType.Update:
                return(true);
            }

            return(false);
        }
Example #22
0
        private IRepository CreateSerialisableRepository(string name, PackageOperationType operationType, Func <IPackageRepository> packageRepositoryFactory, int id)
        {
            Argument.IsNotNullOrEmpty(() => name);
            Argument.IsNotNull(() => packageRepositoryFactory);

            var repository = new Repository
            {
                Id            = id,
                Name          = name,
                OperationType = operationType
            };

            _idTupleDictionary[id] = new Tuple <IRepository, IPackageRepository>(repository, packageRepositoryFactory());

            return(repository);
        }
        private IRepository CreateSerialisableRepository(string name, PackageOperationType operationType, Func<IPackageRepository> packageRepositoryFactory, int id)
        {
            Argument.IsNotNullOrEmpty(() => name);
            Argument.IsNotNull(() => packageRepositoryFactory);

            var repository = new Repository
            {
                Id = id,
                Name = name,
                OperationType = operationType
            };
            
            _idTupleDictionary[id] = new Tuple<IRepository, IPackageRepository>(repository, packageRepositoryFactory());

            return repository;
        }
Example #24
0
        public IRepository GetSerializableRepository(string name, string source, PackageOperationType operationType, Func <IPackageRepository> packageRepositoryFactory, bool renew = false)
        {
            Argument.IsNotNullOrEmpty(() => name);
            Argument.IsNotNull(() => packageRepositoryFactory);

            var key = GetKey(operationType, name);

            if (_keyIdDictionary.TryGetValue(key, out var id))
            {
                return(!renew
                    ? _idTupleDictionary[id].Item1
                    : CreateSerializableRepository(id, name, source, operationType, packageRepositoryFactory));
            }

            id = UniqueIdentifierHelper.GetUniqueIdentifier <RepositoryCacheService>();
            _keyIdDictionary.Add(key, id);

            return(CreateSerializableRepository(id, name, source, operationType, packageRepositoryFactory));
        }
Example #25
0
        public bool CanExecute(PackageOperationType operationType, IPackageDetails package)
        {
            if (package == null)
            {
                return(false);
            }

            switch (operationType)
            {
            case PackageOperationType.Install:
                return(CanInstall(package));

            case PackageOperationType.Update:
                return(CanUpdate(package));

            case PackageOperationType.Uninstall:
                return(CanUninstall(package));
            }

            return(false);
        }
        public bool CanExecute(PackageOperationType operationType, IPackageDetails package)
        {
            if (package == null)
            {
                return false;
            }

            switch (operationType)
            {
                case PackageOperationType.Install:
                    return CanInstall(package);

                case PackageOperationType.Update:
                    return CanUpdate(package);

                case PackageOperationType.Uninstall:
                    return CanUninstall(package);
            }

            return false;
        }
        public async Task ExecuteAsync(PackageOperationType operationType, IPackageDetails packageDetails)
        {
            Argument.IsNotNull(() => packageDetails);

            switch (operationType)
            {
            case PackageOperationType.Uninstall:
                await ExecuteUninstallAsync(packageDetails, default);

                break;

            case PackageOperationType.Install:
                await ExecuteInstallAsync(packageDetails, default);

                break;

            case PackageOperationType.Update:
                await ExecuteUpdateAsync(packageDetails, default);

                break;
            }
        }
        public IRepository GetSerializableRepository(string name, string source, PackageOperationType operationType, Func<IPackageRepository> packageRepositoryFactory, bool renew = false)
        {
            Argument.IsNotNullOrEmpty(() => name);
            Argument.IsNotNull(() => packageRepositoryFactory);

            var key = GetKey(operationType, name);

            int id;
            if (_keyIdDictionary.TryGetValue(key, out id))
            {
                if (!renew)
                {
                    return _idTupleDictionary[id].Item1;
                }

                return CreateSerializableRepository(id, name, source, operationType, packageRepositoryFactory);
            }

            id = _idCounter++;
            _keyIdDictionary.Add(key, id);

            return CreateSerializableRepository(id, name, source, operationType, packageRepositoryFactory);
        }
        public bool CanExecute(PackageOperationType operationType, IPackageDetails package)
        {
            if (package == null)
            {
                return(false);
            }

            var selectedPackage = GetPackageDetailsFromSelectedVersion(package, _localRepository) ?? package;

            switch (operationType)
            {
            case PackageOperationType.Install:
                return(CanInstall(selectedPackage));

            case PackageOperationType.Update:
                return(CanUpdate(selectedPackage));

            case PackageOperationType.Uninstall:
                return(true);
            }

            return(false);
        }
        public async Task <bool> CanExecuteAsync(PackageOperationType operationType, IPackageDetails package)
        {
            if (package is null)
            {
                return(false);
            }

            var selectedPackage = await GetPackageDetailsFromSelectedVersionAsync(package, _localRepository) ?? package;

            switch (operationType)
            {
            case PackageOperationType.Install:
                return(await CanInstallAsync(selectedPackage));

            case PackageOperationType.Update:
                return(await CanUpdateAsync(selectedPackage));

            case PackageOperationType.Uninstall:
                return(true);
            }

            return(false);
        }
Example #31
0
        public IRepository GetSerialisableRepository(string name, PackageOperationType operationType, Func <IPackageRepository> packageRepositoryFactory, bool renew = false)
        {
            Argument.IsNotNullOrEmpty(() => name);
            Argument.IsNotNull(() => packageRepositoryFactory);

            var key = GetKey(operationType, name);

            int id;

            if (_keyIdDictionary.TryGetValue(key, out id))
            {
                if (!renew)
                {
                    return(_idTupleDictionary[id].Item1);
                }

                return(CreateSerialisableRepository(name, operationType, packageRepositoryFactory, id));
            }

            id = _idCounter++;
            _keyIdDictionary.Add(key, id);

            return(CreateSerialisableRepository(name, operationType, packageRepositoryFactory, id));
        }
Example #32
0
 private void FinishOperation(PackageOperationType type, string operationPath, IPackageDetails package)
 {
     PackagingDeletemeMessage.SendWith(new PackageOperationInfo(operationPath, type, package));
     _packageOperationNotificationService.NotifyOperationFinished(operationPath, type, package);
 }
        public void NotifyOperationBatchFinished(PackageOperationType operationType, params IPackageDetails[] packages)
        {
            Argument.IsNotNullOrEmptyArray(() => packages);

            OperationsBatchFinished.SafeInvoke(this, new PackageOperationBatchEventArgs(operationType, packages));
        }
 public IRepository GetSerialisableRepository(string name, PackageOperationType operationType, Func <IPackageRepository> packageRepositoryFactory, bool renew = false)
 {
     return(GetSerializableRepository(name, string.Empty, operationType, packageRepositoryFactory, renew));
 }
 public string GetActionName(PackageOperationType operationType)
 {
     return Enum.GetName(typeof(PackageOperationType), operationType);
 }
        public bool IsRefreshRequired(PackageOperationType operationType)
        {
            switch (operationType)
            {
                case PackageOperationType.Uninstall:
                    return true;

                case PackageOperationType.Install:
                    return false;

                case PackageOperationType.Update:
                    return true;
            }

            return false;
        }
 public IRepository GetSerialisableRepository(string name, PackageOperationType operationType, Func<IPackageRepository> packageRepositoryFactory, bool renew = false)
 {
     return GetSerializableRepository(name, string.Empty, operationType, packageRepositoryFactory, renew);
 }
        public static IPackageDetails Create(PackageOperationType operationType, IPackageSearchMetadata versionMetadata, NuGetVersion packageVersion, bool?isLastVersion)
        {
            var selectedIdentity = new PackageIdentity(versionMetadata.Identity.Id, packageVersion);

            return(Create(operationType, versionMetadata, selectedIdentity, isLastVersion));
        }
Example #39
0
        public void NotifyOperationFinished(string installPath, PackageOperationType operationType, IPackageDetails packageDetails)
        {
            Argument.IsNotNull(() => packageDetails);

            OperationFinished?.Invoke(this, new PackageOperationEventArgs(packageDetails, installPath, operationType));
        }
 public string GetPluralActionName(PackageOperationType operationType)
 {
     return($"{Enum.GetName(typeof(PackageOperationType), operationType)} all");
 }
Example #41
0
        public void NotifyOperationBatchFinished(PackageOperationType operationType, params IPackageDetails[] packages)
        {
            Argument.IsNotNullOrEmptyArray(() => packages);

            OperationsBatchFinished?.Invoke(this, new PackageOperationBatchEventArgs(operationType, packages));
        }
Example #42
0
 public string GetPluralActionName(PackageOperationType operationType)
 {
     return(string.Format("{0} all", Enum.GetName(typeof(PackageOperationType), operationType)));
 }
 private static string GetKey(PackageOperationType operationType, string name)
 {
     return string.Format("{0}_{1}", operationType, name);
 }
 public string GetPluralActionName(PackageOperationType operationType)
 {
     return string.Format("{0} all", Enum.GetName(typeof(PackageOperationType), operationType));
 }
Example #45
0
 private static string GetKey(PackageOperationType operationType, string name)
 {
     return(string.Format("{0}_{1}", operationType, name));
 }
Example #46
0
 private static string GetKey(PackageOperationType operationType, string name)
 {
     return($"{operationType}_{name}");
 }
 public async Task ExecuteAsync(PackageOperationType operationType, IPackageDetails packageDetails, IRepository sourceRepository = null, bool allowedPrerelease = false)
 {
     await ExecuteAsync(operationType, packageDetails);
 }
Example #48
0
 public string GetActionName(PackageOperationType operationType)
 {
     return(Enum.GetName(typeof(PackageOperationType), operationType));
 }