From e58940dd11d34cc3b293116e1a54726c92d29025 Mon Sep 17 00:00:00 2001 From: Vinicius Moreira Date: Wed, 15 Dec 2021 15:09:50 -0300 Subject: [PATCH] [appimage] refactoring: creating custom actions on demand --- bauh/gems/appimage/controller.py | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/bauh/gems/appimage/controller.py b/bauh/gems/appimage/controller.py index dbc2962d..8a29e1b9 100644 --- a/bauh/gems/appimage/controller.py +++ b/bauh/gems/appimage/controller.py @@ -78,19 +78,7 @@ class AppImageManager(SoftwareManager): self.logger = context.logger self.file_downloader = context.file_downloader self.configman = AppImageConfigManager() - self.custom_actions = (CustomSoftwareAction(i18n_label_key='appimage.custom_action.install_file', - i18n_status_key='appimage.custom_action.install_file.status', - manager=self, - manager_method='install_file', - icon_path=resource.get_path('img/appimage.svg', ROOT_DIR), - requires_root=False), - CustomSoftwareAction(i18n_label_key='appimage.custom_action.update_db', - i18n_status_key='appimage.custom_action.update_db.status', - manager=self, - manager_method='update_database', - icon_path=resource.get_path('img/appimage.svg', ROOT_DIR), - requires_root=False, - requires_internet=True)) + self._custom_actions: Optional[Iterable[CustomSoftwareAction]] = None self.custom_app_actions = [CustomSoftwareAction(i18n_label_key='appimage.custom_action.manual_update', i18n_status_key='appimage.custom_action.manual_update.status', manager_method='update_file', @@ -863,8 +851,21 @@ class AppImageManager(SoftwareManager): return False, [traceback.format_exc()] def gen_custom_actions(self) -> Generator[CustomSoftwareAction, None, None]: - for action in self.custom_actions: - yield action + if self._custom_actions is None: + self._custom_actions = (CustomSoftwareAction(i18n_label_key='appimage.custom_action.install_file', + i18n_status_key='appimage.custom_action.install_file.status', + manager=self, + manager_method='install_file', + icon_path=resource.get_path('img/appimage.svg', ROOT_DIR), + requires_root=False), + CustomSoftwareAction(i18n_label_key='appimage.custom_action.update_db', + i18n_status_key='appimage.custom_action.update_db.status', + manager=self, + manager_method='update_database', + icon_path=resource.get_path('img/appimage.svg', ROOT_DIR), + requires_root=False, + requires_internet=True)) + yield from self._custom_actions def get_upgrade_requirements(self, pkgs: List[AppImage], root_password: str, watcher: ProcessWatcher) -> UpgradeRequirements: to_update = []