private IList <IPackage> GetFilteredPackageList(string filterString) { var filter = new DatabasePackageCatalogFilter(PackageCacheFilename); return(filter.Filter(filterString).ToList()); }
private IList<IPackage> GetFilteredPackageList(string filterString) { var filter = new DatabasePackageCatalogFilter(PackageCacheFilename); return filter.Filter(filterString).ToList(); }
public async Task<IEnumerable<IPackage>> GetCatalogPackagesAsync(string filterText, Uri registryUrl = null) { IEnumerable<IPackage> packages = null; using (var semaphore = GetDatabaseSemaphore()) { // Wait until file is downloaded/parsed if another download is already in session. // Allows user to open multiple npm windows and show progress bar without file-in-use errors. bool success = semaphore.WaitOne(10); if (!success) { OnOutputLogged(Resources.ErrorCatalogInUse); // Return immediately so that the user can explicitly decide to refresh on failure. return null; } try { registryUrl = registryUrl ?? await GetRegistryUrl(); RegistryFileMapping registryFileMapping = null; using (var db = new SQLiteConnection(DatabaseCacheFilePath)) { registryFileMapping = db.Table<RegistryFileMapping>().FirstOrDefault(info => info.RegistryUrl == registryUrl.ToString()); } if (registryFileMapping != null) { string registryFileLocation = Path.Combine(CachePath, registryFileMapping.DbFileLocation, RegistryCacheFilename); var packagesEnumerable = new DatabasePackageCatalogFilter(registryFileLocation).Filter(filterText); packages = await Task.Run(() => packagesEnumerable.ToList()); } } catch (Exception e) { OnOutputLogged(e.ToString()); throw; } finally { semaphore.Release(); } } return packages; }