Beispiel #1
0
        /// <summary>
        /// Get list of packages from the remote package source. Used for Get-Package -ListAvailable.
        /// </summary>
        /// <param name="searchString">The search string to use for filtering.</param>
        /// <param name="includePrerelease">Whether or not to include prerelease packages in the results.</param>
        /// <param name="handleError">
        /// An action for handling errors during the enumeration of the returned results. The
        /// parameter is the error message. This action is never called by multiple threads at once.
        /// </param>
        /// <returns>The lazy sequence of package search metadata.</returns>
        protected IEnumerable <IPackageSearchMetadata> GetPackagesFromRemoteSource(
            string searchString,
            bool includePrerelease,
            Action <string> handleError)
        {
            var searchFilter = new SearchFilter(includePrerelease: includePrerelease);

            searchFilter.IncludeDelisted = false;
            var packageFeed = new MultiSourcePackageFeed(PrimarySourceRepositories, logger: null);
            var searchTask  = packageFeed.SearchAsync(searchString, searchFilter, Token);

            return(PackageFeedEnumerator.Enumerate(
                       packageFeed,
                       searchTask,
                       (source, exception) =>
            {
                var message = string.Format(
                    CultureInfo.CurrentCulture,
                    Resources.Cmdlet_FailedToSearchSource,
                    source,
                    Environment.NewLine,
                    ExceptionUtilities.DisplayMessage(exception));

                handleError(message);
            },
                       Token));
        }
        /// <summary>
        /// Get list of packages from the remote package source. Used for Get-Package -ListAvailable.
        /// </summary>
        protected IEnumerable <IPackageSearchMetadata> GetPackagesFromRemoteSource(string searchString, bool includePrerelease)
        {
            var searchFilter = new SearchFilter
            {
                IncludePrerelease   = includePrerelease,
                SupportedFrameworks = Enumerable.Empty <string>(),
                IncludeDelisted     = false
            };

            var packageFeed = new MultiSourcePackageFeed(PrimarySourceRepositories, logger: null);
            var searchTask  = packageFeed.SearchAsync(searchString, searchFilter, Token);

            return(PackageFeedEnumerator.Enumerate(packageFeed, searchTask, Token));
        }