示例#1
0
        public void UpdatePackageStatus(IEnumerable <PackageCollectionItem> installedPackages)
        {
            // Get the minimum version installed in any target project/solution
            InstalledVersion = installedPackages
                               .GetPackageVersions(Id)
                               .MinOrDefault();

            // Set auto referenced to true any reference for the given id contains the flag.
            AutoReferenced = installedPackages.IsAutoReferenced(Id);

            _backgroundLatestVersionLoader = AsyncLazy.New(
                async() =>
            {
                var packageVersions = await GetVersionsAsync();

                // filter package versions based on allowed versions in packages.config
                packageVersions            = packageVersions.Where(v => AllowedVersions.Satisfies(v.Version));
                var latestAvailableVersion = packageVersions
                                             .Select(p => p.Version)
                                             .MaxOrDefault();

                return(latestAvailableVersion);
            });

            _backgroundDeprecationMetadataLoader = AsyncLazy.New(GetPackageDeprecationMetadataAsync);

            OnPropertyChanged(nameof(Status));
        }
示例#2
0
 public static IPackageSearchMetadata WithVersions(this IPackageSearchMetadata metadata, IEnumerable <VersionInfo> versions)
 {
     return(PackageSearchMetadataBuilder
            .FromMetadata(metadata)
            .WithVersions(AsyncLazy.New(versions))
            .Build());
 }
示例#3
0
 public static IPackageSearchMetadata WithVersions(this IPackageSearchMetadata metadata, Func <IEnumerable <VersionInfo> > valueFactory)
 {
     return(PackageSearchMetadataBuilder
            .FromMetadata(metadata)
            .WithVersions(AsyncLazy.New(valueFactory))
            .Build());
 }
        public IPackageSearchMetadata Build()
        {
            var clonedMetadata = new ClonedPackageSearchMetadata
            {
                Authors                  = _metadata.Authors,
                DependencySets           = _metadata.DependencySets ?? Enumerable.Empty <PackageDependencyGroup>(),
                Description              = _metadata.Description,
                DownloadCount            = _metadata.DownloadCount,
                IconUrl                  = _metadata.IconUrl,
                Identity                 = _metadata.Identity,
                LicenseUrl               = _metadata.LicenseUrl,
                Owners                   = _metadata.Owners,
                ProjectUrl               = _metadata.ProjectUrl,
                Published                = _metadata.Published,
                ReportAbuseUrl           = _metadata.ReportAbuseUrl,
                PackageDetailsUrl        = _metadata.PackageDetailsUrl,
                RequireLicenseAcceptance = _metadata.RequireLicenseAcceptance,
                Summary                  = _metadata.Summary,
                Tags  = _metadata.Tags,
                Title = _metadata.Title,
                LazyVersionsFactory    = _lazyVersionsFactory,
                IsListed               = _metadata.IsListed,
                PrefixReserved         = _metadata.PrefixReserved,
                LicenseMetadata        = _metadata.LicenseMetadata,
                LazyDeprecationFactory = _lazyDeprecationFactory ?? AsyncLazy.New(_metadata.GetDeprecationMetadataAsync),
                Vulnerabilities        = _metadata.Vulnerabilities,
                PackageReader          =
                    (_metadata as LocalPackageSearchMetadata)?.PackageReader ??
                    (_metadata as ClonedPackageSearchMetadata)?.PackageReader,
            };

            return(clonedMetadata);
        }
        public IEnumerable <PackageItemListViewModel> GetCurrent()
        {
            if (_state.ItemsCount == 0)
            {
                return(Enumerable.Empty <PackageItemListViewModel>());
            }

            var listItems = _state.Results
                            .Select((metadata, index) =>
            {
                VersionRange allowedVersions = VersionRange.All;

                // get the allowed version range and pass it to package item view model to choose the latest version based on that
                if (_packageReferences != null)
                {
                    var matchedPackageReferences = _packageReferences.Where(r => StringComparer.OrdinalIgnoreCase.Equals(r.Identity.Id, metadata.Identity.Id));
                    var allowedVersionsRange     = matchedPackageReferences.Select(r => r.AllowedVersions).Where(v => v != null).ToArray();

                    if (allowedVersionsRange.Length > 0)
                    {
                        allowedVersions = allowedVersionsRange[0];
                    }
                }

                var listItem = new PackageItemListViewModel
                {
                    Id                  = metadata.Identity.Id,
                    Version             = metadata.Identity.Version,
                    IconUrl             = metadata.IconUrl,
                    Author              = metadata.Authors,
                    DownloadCount       = metadata.DownloadCount,
                    Summary             = metadata.Summary,
                    Versions            = AsyncLazy.New(metadata.GetVersionsAsync),
                    AllowedVersions     = allowedVersions,
                    PrefixReserved      = metadata.PrefixReserved && !IsMultiSource,
                    DeprecationMetadata = AsyncLazy.New(metadata.GetDeprecationMetadataAsync),
                    Vulnerabilities     = metadata.Vulnerabilities,
                    Recommended         = index < _recommendedCount,
                    PackageReader       = (metadata as PackageSearchMetadataBuilder.ClonedPackageSearchMetadata)?.PackageReader,
                };

                listItem.UpdatePackageStatus(_installedPackages);

                if (!_context.IsSolution && _context.PackageManagerProviders.Any())
                {
                    listItem.ProvidersLoader = AsyncLazy.New(
                        async() =>
                    {
                        string uniqueProjectName = await _context.Projects[0].GetUniqueNameOrNameAsync(CancellationToken.None);
                        return(await AlternativePackageManagerProviders.CalculateAlternativePackageManagersAsync(_context.PackageManagerProviders, listItem.Id, uniqueProjectName));
                    });
                }

                return(listItem);
            });

            return(listItems.ToArray());
        }
 public PackageSearchMetadataCacheItemEntry(IPackageSearchMetadata packageSearchMetadata, IPackageMetadataProvider packageMetadataProvider)
 {
     _packageSearchMetadata         = packageSearchMetadata;
     _packageMetadataProvider       = packageMetadataProvider;
     _detailedPackageSearchMetadata = AsyncLazy.New(() =>
     {
         return(_packageMetadataProvider.GetPackageMetadataAsync(_packageSearchMetadata.Identity, includePrerelease: true, CancellationToken.None));
     });
 }
示例#7
0
        HttpClient CreateHttpClient(PackageSourceViewModel packageSource)
        {
            var lazyProvider      = AsyncLazy.New(() => Enumerable.Empty <ICredentialProvider> ());
            var credentialService = new CredentialService(lazyProvider, true, false);

            return(HttpClientFactory.CreateHttpClient(
                       packageSource.GetPackageSource(),
                       credentialService));
        }
 PackageItemListViewModel CreatePackageItemListViewModel()
 {
     packageVersions          = new List <VersionInfo> ();
     packageItemListViewModel = new PackageItemListViewModel {
         Id       = "TestPackage",
         Version  = new NuGetVersion("1.2.3"),
         Versions = AsyncLazy.New(() => {
             return(Task.FromResult(packageVersions.AsEnumerable()));
         })
     };
     return(packageItemListViewModel);
 }
示例#9
0
        public static ICredentialService CreateNonInteractiveCredentialService()
        {
            var existingCredentialService = HttpHandlerResourceV3Extensions.GetCustomCredentialService();

            if (existingCredentialService != null)
            {
                return(existingCredentialService.CreateNonInteractive());
            }
            var lazyProvider = AsyncLazy.New(() => Enumerable.Empty <ICredentialProvider> ());

            return(new CredentialService(lazyProvider, nonInteractive: true, handlesDefaultCredentials: false));
        }
示例#10
0
        public IEnumerable <PackageItemListViewModel> GetCurrent()
        {
            if (_state.ItemsCount == 0)
            {
                return(Enumerable.Empty <PackageItemListViewModel>());
            }

            var listItems = _state.Results
                            .Select(metadata =>
            {
                VersionRange allowedVersions = VersionRange.All;

                // get the allowed version range and pass it to package item view model to choose the latest version based on that
                if (_packageReferences != null)
                {
                    var matchedPackageReferences = _packageReferences.Where(r => StringComparer.OrdinalIgnoreCase.Equals(r.PackageIdentity.Id, metadata.Identity.Id));
                    var allowedVersionsRange     = matchedPackageReferences.Select(r => r.AllowedVersions).Where(v => v != null).ToArray();

                    if (allowedVersionsRange.Length > 0)
                    {
                        allowedVersions = allowedVersionsRange[0];
                    }
                }

                var listItem = new PackageItemListViewModel
                {
                    Id                  = metadata.Identity.Id,
                    Version             = metadata.Identity.Version,
                    IconUrl             = metadata.IconUrl,
                    Author              = metadata.Authors,
                    DownloadCount       = metadata.DownloadCount,
                    Summary             = metadata.Summary,
                    Versions            = AsyncLazy.New(() => metadata.GetVersionsAsync()),
                    AllowedVersions     = allowedVersions,
                    PrefixReserved      = metadata.PrefixReserved && !IsMultiSource,
                    IsPackageDeprecated = metadata.DeprecationMetadata != null,
                };
                listItem.UpdatePackageStatus(_installedPackages);

                if (!_context.IsSolution && _context.PackageManagerProviders.Any())
                {
                    listItem.ProvidersLoader = AsyncLazy.New(
                        () => AlternativePackageManagerProviders.CalculateAlternativePackageManagersAsync(
                            _context.PackageManagerProviders,
                            listItem.Id,
                            _context.Projects[0]));
                }

                return(listItem);
            });

            return(listItems.ToArray());
        }
 PackageItemListViewModel CreatePackageItemListViewModel(IPackageSearchMetadata metadata)
 {
     return(new PackageItemListViewModel {
         Id = metadata.Identity.Id,
         Version = metadata.Identity.Version,
         IconUrl = metadata.IconUrl,
         Author = metadata.Authors,
         DownloadCount = metadata.DownloadCount,
         Summary = metadata.Summary,
         Description = metadata.Description,
         Title = metadata.Title,
         LicenseUrl = metadata.LicenseUrl,
         ProjectUrl = metadata.ProjectUrl,
         Published = metadata.Published,
         Versions = AsyncLazy.New(() => metadata.GetVersionsAsync())
     });
 }
示例#12
0
        public IEnumerable <PackageItemListViewModel> GetCurrent()
        {
            if (_state.ItemsCount == 0)
            {
                return(Enumerable.Empty <PackageItemListViewModel>());
            }

            var listItems = _state.Results
                            .Select(metadata =>
            {
                var listItem = new PackageItemListViewModel
                {
                    Id            = metadata.Identity.Id,
                    Version       = metadata.Identity.Version,
                    IconUrl       = metadata.IconUrl,
                    Author        = metadata.Authors,
                    DownloadCount = metadata.DownloadCount,
                    Summary       = metadata.Summary,
                    Description   = metadata.Description,
                    Title         = metadata.Title,
                    LicenseUrl    = metadata.LicenseUrl,
                    ProjectUrl    = metadata.ProjectUrl,
                    Published     = metadata.Published,
                    Versions      = AsyncLazy.New(() => metadata.GetVersionsAsync())
                };

                /*listItem.UpdatePackageStatus(_installedPackages);
                 *
                 * if (!_context.IsSolution && _context.PackageManagerProviders.Any())
                 * {
                 *      listItem.ProvidersLoader = AsyncLazy.New(
                 *              () => AlternativePackageManagerProviders.CalculateAlternativePackageManagersAsync(
                 *                      _context.PackageManagerProviders,
                 *                      listItem.Id,
                 *                      _context.Projects[0]));
                 * }*/

                return(listItem);
            });

            return(listItems.ToArray());
        }
示例#13
0
        public void UpdatePackageStatus(IEnumerable <PackageIdentity> installedPackages)
        {
            // Get the minimum version installed in any target project/solution
            InstalledVersion = installedPackages
                               .GetPackageVersions(Id)
                               .MinOrDefault();

            _backgroundLoader = AsyncLazy.New(
                async() =>
            {
                var packageVersions        = await GetVersionsAsync();
                var latestAvailableVersion = packageVersions
                                             .Select(p => p.Version)
                                             .MaxOrDefault();

                return(latestAvailableVersion);
            });

            OnPropertyChanged(nameof(Status));
        }
        /// <summary>
        /// Get package metadata from the package folders.
        /// </summary>
        public async Task <IPackageSearchMetadata> GetLocalPackageMetadataAsync(
            PackageIdentity identity,
            bool includePrerelease,
            CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();
            var sources = new List <SourceRepository>();

            if (_localRepository != null)
            {
                sources.Add(_localRepository);
            }

            if (_globalLocalRepositories != null)
            {
                sources.AddRange(_globalLocalRepositories);
            }

            // Take the package from the first source it is found in
            foreach (var source in sources)
            {
                var result = await source.GetPackageMetadataFromLocalSourceAsync(identity, cancellationToken);

                if (result != null)
                {
                    var versionsAndDeprecationMetadataTask = FetchAndMergeVersionsAndDeprecationMetadataAsync(identity, includePrerelease, cancellationToken);

                    return(PackageSearchMetadataBuilder
                           .FromMetadata(result)
                           .WithVersions(AsyncLazy.New(async() => (await versionsAndDeprecationMetadataTask).versions))
                           .WithDeprecation(AsyncLazy.New(async() => (await versionsAndDeprecationMetadataTask).deprecationMetadata))
                           .Build());
                }
            }

            return(null);
        }
 public CredentialService CreateNonInteractive()
 {
     bool handlesDefaultCredentials = Providers.Any(provider => provider is DefaultNetworkCredentialsCredentialProvider);
     var  lazyProviders             = AsyncLazy.New(() => Providers)
     ;                       return(new CredentialService(lazyProviders, nonInteractive: true, handlesDefaultCredentials: handlesDefaultCredentials));
 }
示例#16
0
        public IEnumerable <PackageItemViewModel> GetCurrent()
        {
            if (_state.ItemsCount == 0)
            {
                return(Enumerable.Empty <PackageItemViewModel>());
            }

            var listItemViewModels = new List <PackageItemViewModel>();

            foreach (PackageSearchMetadataContextInfo metadata in _state.Results.PackageSearchItems)
            {
                VersionRange allowedVersions = VersionRange.All;

                // get the allowed version range and pass it to package item view model to choose the latest version based on that
                if (_packageReferences != null)
                {
                    IEnumerable <IPackageReferenceContextInfo> matchedPackageReferences = _packageReferences.Where(r => StringComparer.OrdinalIgnoreCase.Equals(r.Identity.Id, metadata.Identity.Id));
                    VersionRange[] allowedVersionsRange = matchedPackageReferences.Select(r => r.AllowedVersions).Where(v => v != null).ToArray();

                    if (allowedVersionsRange.Length > 0)
                    {
                        allowedVersions = allowedVersionsRange[0];
                    }
                }

                var listItem = new PackageItemViewModel
                {
                    Id                            = metadata.Identity.Id,
                    Version                       = metadata.Identity.Version,
                    IconUrl                       = metadata.IconUrl,
                    Author                        = metadata.Authors,
                    DownloadCount                 = metadata.DownloadCount,
                    Summary                       = metadata.Summary,
                    AllowedVersions               = allowedVersions,
                    PrefixReserved                = metadata.PrefixReserved && !IsMultiSource,
                    Versions                      = AsyncLazy.New(() => { return(GetVersionInfoAsync(metadata.Identity)); }),
                    DeprecationMetadata           = AsyncLazy.New(() => { return(GetDeprecationMetadataAsync(metadata.Identity)); }),
                    DetailedPackageSearchMetadata = AsyncLazy.New(() => { return(GetDetailedPackageSearchMetadataContextInfoAsync(metadata.Identity)); }),
                    Recommended                   = metadata.IsRecommended,
                    RecommenderVersion            = metadata.RecommenderVersion,
                    Vulnerabilities               = metadata.Vulnerabilities,
                    Sources                       = _packageSources,
                    PackagePath                   = metadata.PackagePath,
                    PackageFileService            = _packageFileService,
                };

                listItem.UpdatePackageStatus(_installedPackages);

                if (!_context.IsSolution && _context.PackageManagerProviders.Any())
                {
                    listItem.ProvidersLoader = AsyncLazy.New(
                        async() =>
                    {
                        string uniqueProjectName = await _context.Projects[0].GetUniqueNameOrNameAsync(
                            _context.ServiceBroker,
                            CancellationToken.None);

                        return(await AlternativePackageManagerProviders.CalculateAlternativePackageManagersAsync(
                                   _context.PackageManagerProviders,
                                   listItem.Id,
                                   uniqueProjectName));
                    });
                }
                listItemViewModels.Add(listItem);
            }

            return(listItemViewModels.ToArray());
        }