public static IObservable <string> GetPackages(XpandPackageSource packageSource, string xpandFeed, string nugetFeed, XpandPackageFilter filter) { var allLabPackages = Providers.ListPackages(xpandFeed) .Where(s => FilterMatch(s, filter)); if (packageSource == XpandPackageSource.Nuget) { allLabPackages = allLabPackages.SelectMany(id => Providers.ListPackages(nugetFeed, id)); } return(allLabPackages.Distinct()); }
public Task <NugetPackage[]> Packages(XpandPackageSource packageSource = XpandPackageSource.Xpand) { return(_memoryCache.GetOrCreate($"{nameof(Packages)}{packageSource}", entry => Observable.Return(FindXpandNugetPackage.GetPackages(packageSource, XpandFeed, NugetFeed, XpandPackageFilter.All) .Select(o => new NugetPackage { Id = o.BaseObject.GetPropertyValue("Id").ToString(), Version = o.BaseObject.GetPropertyValue("Version").ToString() }) .ToEnumerable().ToArray()) , AbsoluteExpirationRelativeToNow, Time) .ToTask()); }
public static IObservable <PSObject> GetPackages(XpandPackageSource packageSource, string xpandFeed, string nugetFeed, XpandPackageFilter filter) { if (packageSource == XpandPackageSource.Xpand) { nugetFeed = null; } else if (packageSource == XpandPackageSource.Nuget) { xpandFeed = null; } return(Providers.ListXpandPackages(xpandFeed, nugetFeed).ToPackageObject() .Where(tuple => FilterMatch(tuple, filter)) .Select(_ => PSObject.AsPSObject(new{ _.Id, _.Version }))); }
public static IObservable <PSObject> GetPackages(XpandPackageSource packageSource, string xpandFeed, string nugetFeed, XpandPackageFilter filter) { var allLabPackages = Providers.ListPackages(xpandFeed).ToPackageObject() .Where(tuple => FilterMatch(tuple, filter)); if (packageSource == XpandPackageSource.Nuget) { IObservable <(string Id, Version Version)> Metadata((string Id, Version Version) tuple) => Providers.PackageMetadata(nugetFeed, tuple.Id).ToPackageObject() .GroupBy(_ => _.Id).SelectMany(obs => obs.LastAsync()); allLabPackages = allLabPackages.SelectMany(Metadata); } return(allLabPackages.Distinct().Select(_ => PSObject.AsPSObject(new{ _.Id, _.Version }))); }
private string GetFeed(XpandPackageSource source) { return((string)this.Invoke($"Get-packageFeed -{source}").First().BaseObject); }