/// <summary> /// Print updates from the store /// </summary> /// <param name="options">Print options, including filters</param> public void PrintUpdates(QueryMetadataOptions options) { var filter = FilterBuilder.MetadataFilterFromCommandLine(options as IMetadataFilterOptions); if (filter == null) { return; } filter.FirstX = options.FirstX; // Apply filters specified on the command line List <Update> filteredUpdates; if (options.Classifications || options.Products || options.Detectoids) { filteredUpdates = MetadataSource.GetCategories(filter); if (!options.Classifications) { filteredUpdates.RemoveAll(u => u is Classification); } if (!options.Products) { filteredUpdates.RemoveAll(u => u is Product); } if (!options.Detectoids) { filteredUpdates.RemoveAll(u => u is Detectoid); } } else if (options.Updates || options.Drivers) { filteredUpdates = MetadataSource.GetUpdates(filter); if (options.Drivers) { filteredUpdates.RemoveAll(u => !(u is DriverUpdate)); } } else { filteredUpdates = new List <Update>(); } if (filteredUpdates.Count == 0) { Console.WriteLine("No data found"); } else { Console.Write("\r\nQuery results:\r\n-----------------------------"); if (!options.CountOnly) { foreach (var update in filteredUpdates) { PrintUpdateMetadata(update, MetadataSource); } } Console.WriteLine("-----------------------------\r\nMatched {0} entries", filteredUpdates.Count); } }