mirror of
https://github.com/spalencsar/bearhub.git
synced 2026-07-07 04:44:15 +02:00
refreshing only the needed package types
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
from argparse import Namespace
|
||||
from threading import Thread
|
||||
from typing import List, Set
|
||||
from typing import List, Set, Type
|
||||
|
||||
from bauh_api.abstract.controller import SoftwareManager, SearchResult
|
||||
from bauh_api.abstract.handler import ProcessWatcher
|
||||
@@ -96,20 +96,34 @@ class GenericSoftwareManager(SoftwareManager):
|
||||
self.thread_prepare.join()
|
||||
self.thread_prepare = None
|
||||
|
||||
def read_installed(self, disk_loader: DiskCacheLoader = None) -> List[SoftwarePackage]:
|
||||
def read_installed(self, disk_loader: DiskCacheLoader = None, pkg_types: Set[Type[SoftwarePackage]] = None) -> List[SoftwarePackage]:
|
||||
self._wait_to_be_ready()
|
||||
|
||||
installed = []
|
||||
|
||||
disk_loader = None
|
||||
|
||||
for man in self.managers:
|
||||
if self._is_enabled(man):
|
||||
if not disk_loader:
|
||||
disk_loader = self.disk_loader_factory.new()
|
||||
disk_loader.start()
|
||||
if not pkg_types: # any type
|
||||
for man in self.managers:
|
||||
if self._is_enabled(man):
|
||||
if not disk_loader:
|
||||
disk_loader = self.disk_loader_factory.new()
|
||||
disk_loader.start()
|
||||
|
||||
installed.extend(man.read_installed(disk_loader=disk_loader))
|
||||
installed.extend(man.read_installed(disk_loader=disk_loader, pkg_types=None))
|
||||
|
||||
else:
|
||||
man_already_used = []
|
||||
|
||||
for t in pkg_types:
|
||||
man = self.map.get(t)
|
||||
if man and (man not in man_already_used) and self._is_enabled(man):
|
||||
|
||||
if not disk_loader:
|
||||
disk_loader = self.disk_loader_factory.new()
|
||||
disk_loader.start()
|
||||
|
||||
installed.extend(man.read_installed(disk_loader=disk_loader, pkg_types=None))
|
||||
|
||||
if disk_loader:
|
||||
disk_loader.stop = True
|
||||
|
||||
Reference in New Issue
Block a user