mirror of
https://github.com/spalencsar/bearhub.git
synced 2026-07-07 09:24:16 +02:00
dynamically instantiang an fpakman extension
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
import argparse
|
import argparse
|
||||||
|
import inspect
|
||||||
import os
|
import os
|
||||||
|
import pkgutil
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
@@ -7,7 +9,7 @@ from PyQt5.QtGui import QIcon
|
|||||||
from PyQt5.QtWidgets import QApplication
|
from PyQt5.QtWidgets import QApplication
|
||||||
from colorama import Fore
|
from colorama import Fore
|
||||||
|
|
||||||
from fpakman import __version__, __app_name__
|
from fpakman import __version__, __app_name__, ROOT_DIR
|
||||||
from fpakman.core import resource
|
from fpakman.core import resource
|
||||||
from fpakman.core.controller import GenericApplicationManager
|
from fpakman.core.controller import GenericApplicationManager
|
||||||
from fpakman_api.util.disk import DiskCacheLoaderFactory
|
from fpakman_api.util.disk import DiskCacheLoaderFactory
|
||||||
@@ -65,42 +67,57 @@ if args.check_packaging_once == 1:
|
|||||||
|
|
||||||
locale_keys = util.get_locale_keys(args.locale)
|
locale_keys = util.get_locale_keys(args.locale)
|
||||||
|
|
||||||
|
|
||||||
|
manager_classes = None
|
||||||
|
|
||||||
|
|
||||||
|
def _find_manager(member):
|
||||||
|
if inspect.isclass(member) and inspect.getmro(member)[1].__name__ == 'ApplicationManager':
|
||||||
|
return member
|
||||||
|
elif inspect.ismodule(member):
|
||||||
|
for name, mod in inspect.getmembers(member):
|
||||||
|
manager_found = _find_manager(mod)
|
||||||
|
if manager_found:
|
||||||
|
return manager_found
|
||||||
|
|
||||||
|
|
||||||
http_session = requests.Session()
|
http_session = requests.Session()
|
||||||
caches = []
|
caches, cache_map = [], {}
|
||||||
cache_map = {}
|
managers = None
|
||||||
managers = []
|
|
||||||
|
|
||||||
# if args.flatpak:
|
|
||||||
# pass
|
|
||||||
# flatpak_api_cache = Cache(expiration_time=args.cache_exp)
|
|
||||||
# cache_map[FlatpakApplication] = flatpak_api_cache
|
|
||||||
# managers.append(FlatpakManager(app_args=args, api_cache=flatpak_api_cache, disk_cache=args.disk_cache, http_session=http_session, locale_keys=locale_keys))
|
|
||||||
# caches.append(flatpak_api_cache)
|
|
||||||
#
|
|
||||||
# if args.disk_cache:
|
|
||||||
# Path(FLATPAK_CACHE_PATH).mkdir(parents=True, exist_ok=True)
|
|
||||||
|
|
||||||
# if args.snap:
|
|
||||||
# pass
|
|
||||||
# snap_api_cache = Cache(expiration_time=args.cache_exp)
|
|
||||||
# cache_map[SnapApplication] = snap_api_cache
|
|
||||||
# managers.append(SnapManager(app_args=args, disk_cache=args.disk_cache, api_cache=snap_api_cache, http_session=http_session, locale_keys=locale_keys))
|
|
||||||
# caches.append(snap_api_cache)
|
|
||||||
#
|
|
||||||
# if args.disk_cache:
|
|
||||||
# Path(SNAP_CACHE_PATH).mkdir(parents=True, exist_ok=True)
|
|
||||||
|
|
||||||
icon_cache = Cache(expiration_time=args.icon_exp)
|
icon_cache = Cache(expiration_time=args.icon_exp)
|
||||||
caches.append(icon_cache)
|
caches.append(icon_cache)
|
||||||
|
|
||||||
disk_loader_factory = DiskCacheLoaderFactory(disk_cache=args.disk_cache, cache_map=cache_map)
|
disk_loader_factory = DiskCacheLoaderFactory(disk_cache=args.disk_cache, cache_map=cache_map)
|
||||||
|
|
||||||
|
for m in pkgutil.iter_modules():
|
||||||
|
if m.ispkg and m.name and m.name != 'fpakman_api' and m.name.startswith('fpakman_'):
|
||||||
|
module = pkgutil.find_loader(m.name).load_module()
|
||||||
|
|
||||||
|
manager = _find_manager(module)
|
||||||
|
|
||||||
|
if manager:
|
||||||
|
if not managers:
|
||||||
|
managers = []
|
||||||
|
|
||||||
|
app_cache = Cache(expiration_time=args.cache_exp)
|
||||||
|
man = manager(app_args=args,
|
||||||
|
fpakman_root_dir=ROOT_DIR,
|
||||||
|
http_session=http_session,
|
||||||
|
locale_keys=locale_keys,
|
||||||
|
app_cache=app_cache)
|
||||||
|
cache_map[man.get_app_type()] = app_cache
|
||||||
|
caches.append(app_cache)
|
||||||
|
managers.append(man)
|
||||||
|
|
||||||
|
|
||||||
|
# if args.snap:
|
||||||
|
# if args.disk_cache:
|
||||||
|
# Path(SNAP_CACHE_PATH).mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
|
||||||
manager = GenericApplicationManager(managers, disk_loader_factory=disk_loader_factory, app_args=args)
|
manager = GenericApplicationManager(managers, disk_loader_factory=disk_loader_factory, app_args=args)
|
||||||
|
|
||||||
managed_caches = manager.get_managed_caches()
|
|
||||||
|
|
||||||
if managed_caches:
|
|
||||||
caches.extend(managed_caches)
|
|
||||||
|
|
||||||
app = QApplication(sys.argv)
|
app = QApplication(sys.argv)
|
||||||
app.setApplicationName(__app_name__)
|
app.setApplicationName(__app_name__)
|
||||||
app.setApplicationVersion(__version__)
|
app.setApplicationVersion(__version__)
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ from fpakman.util.cache import Cache
|
|||||||
class GenericApplicationManager(ApplicationManager):
|
class GenericApplicationManager(ApplicationManager):
|
||||||
|
|
||||||
def __init__(self, managers: List[ApplicationManager], disk_loader_factory: DiskCacheLoaderFactory, app_args: Namespace):
|
def __init__(self, managers: List[ApplicationManager], disk_loader_factory: DiskCacheLoaderFactory, app_args: Namespace):
|
||||||
super(GenericApplicationManager, self).__init__(app_args=app_args, cache_factory=None, locale_keys=None, fpakman_root_dir=ROOT_DIR, http_session=None)
|
super(GenericApplicationManager, self).__init__(app_args=app_args, app_cache=None, locale_keys=None, fpakman_root_dir=ROOT_DIR, http_session=None)
|
||||||
self.managers = managers
|
self.managers = managers
|
||||||
self.map = {m.get_app_type(): m for m in self.managers}
|
self.map = {m.get_app_type(): m for m in self.managers}
|
||||||
self.disk_loader_factory = disk_loader_factory
|
self.disk_loader_factory = disk_loader_factory
|
||||||
@@ -209,17 +209,3 @@ class GenericApplicationManager(ApplicationManager):
|
|||||||
warnings.extend(man_warnings)
|
warnings.extend(man_warnings)
|
||||||
|
|
||||||
return warnings
|
return warnings
|
||||||
|
|
||||||
def get_managed_caches(self) -> List[Cache]:
|
|
||||||
caches = None
|
|
||||||
|
|
||||||
if self.managers:
|
|
||||||
for man in self.managers:
|
|
||||||
if self._is_enabled(man):
|
|
||||||
man_caches = man.get_managed_caches()
|
|
||||||
if man_caches:
|
|
||||||
if caches is None:
|
|
||||||
caches = []
|
|
||||||
|
|
||||||
caches.extend(man_caches)
|
|
||||||
return caches
|
|
||||||
|
|||||||
Reference in New Issue
Block a user