[arch] fix -> crashing when information of a given package is not available

This commit is contained in:
Vinicius Moreira
2021-01-02 10:13:53 -03:00
parent 579ea91dcc
commit 4d0660e0ea
15 changed files with 53 additions and 19 deletions

View File

@@ -4,6 +4,14 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [0.9.12] 2021
### Fixes
- Arch
- crashing when information of a given package is not available
- UI
- displaying a popup when information of a given package is not available
## [0.9.11] 2020-12-30 ## [0.9.11] 2020-12-30
### New system requirements ### New system requirements
- **python-dateutil**: better Python library for date handling (install the equivalent package for your Linux distribution before upgrading bauh) - **python-dateutil**: better Python library for date handling (install the equivalent package for your Linux distribution before upgrading bauh)

View File

@@ -1,4 +1,4 @@
__version__ = '0.9.11' __version__ = '0.9.12'
__app_name__ = 'bauh' __app_name__ = 'bauh'
import os import os

View File

@@ -1417,21 +1417,23 @@ class ArchManager(SoftwareManager):
t.start() t.start()
info = pacman.get_info_dict(pkg.name) info = pacman.get_info_dict(pkg.name)
self._parse_dates_string_from_info(pkg.name, info)
if pkg.commit: if info is not None:
info['commit'] = pkg.commit self._parse_dates_string_from_info(pkg.name, info)
if pkg.last_modified: if pkg.commit:
info['last_modified'] = self._parse_timestamp(ts=pkg.last_modified, info['commit'] = pkg.commit
error_msg="Could not parse AUR package '{}' 'last_modified' field ({})".format(pkg.name, pkg.last_modified))
t.join() if pkg.last_modified:
info['last_modified'] = self._parse_timestamp(ts=pkg.last_modified,
error_msg="Could not parse AUR package '{}' 'last_modified' field ({})".format(pkg.name, pkg.last_modified))
if pkg.pkgbuild: t.join()
info['13_pkg_build'] = pkg.pkgbuild
info['14_installed_files'] = pacman.list_installed_files(pkg.name) if pkg.pkgbuild:
info['13_pkg_build'] = pkg.pkgbuild
info['14_installed_files'] = pacman.list_installed_files(pkg.name)
return info return info
else: else:
@@ -1501,9 +1503,12 @@ class ArchManager(SoftwareManager):
def _get_info_repo_pkg(self, pkg: ArchPackage) -> dict: def _get_info_repo_pkg(self, pkg: ArchPackage) -> dict:
info = pacman.get_info_dict(pkg.name, remote=not pkg.installed) info = pacman.get_info_dict(pkg.name, remote=not pkg.installed)
self._parse_dates_string_from_info(pkg.name, info)
if pkg.installed: if info is not None:
info['installed files'] = pacman.list_installed_files(pkg.name) self._parse_dates_string_from_info(pkg.name, info)
if pkg.installed:
info['installed files'] = pacman.list_installed_files(pkg.name)
return info return info

View File

@@ -69,7 +69,7 @@ def get_info_list(pkg_name: str, remote: bool = False) -> List[tuple]:
return re.findall(r'(\w+\s?\w+)\s*:\s*(.+(\n\s+.+)*)', info) return re.findall(r'(\w+\s?\w+)\s*:\s*(.+(\n\s+.+)*)', info)
def get_info_dict(pkg_name: str, remote: bool = False) -> dict: def get_info_dict(pkg_name: str, remote: bool = False) -> Optional[dict]:
list_attrs = {'depends on', 'required by', 'conflicts with'} list_attrs = {'depends on', 'required by', 'conflicts with'}
info_list = get_info_list(pkg_name, remote) info_list = get_info_list(pkg_name, remote)

View File

@@ -644,7 +644,12 @@ class ShowPackageInfo(AsyncAction):
def run(self): def run(self):
if self.pkg: if self.pkg:
info = {'__app__': self.pkg} info = {'__app__': self.pkg}
info.update(self.manager.get_info(self.pkg.model))
pkg_info = self.manager.get_info(self.pkg.model)
if pkg_info:
info.update(pkg_info)
self.notify_finished(info) self.notify_finished(info)
self.pkg = None self.pkg = None

View File

@@ -1216,9 +1216,16 @@ class ManageWindow(QWidget):
def _finish_show_info(self, pkg_info: dict): def _finish_show_info(self, pkg_info: dict):
self._finish_action(action_id=ACTION_INFO) self._finish_action(action_id=ACTION_INFO)
dialog_info = InfoDialog(pkg_info=pkg_info, icon_cache=self.icon_cache,
i18n=self.i18n, screen_size=self.screen_size) if pkg_info:
dialog_info.exec_() if len(pkg_info) > 1:
dialog_info = InfoDialog(pkg_info=pkg_info, icon_cache=self.icon_cache,
i18n=self.i18n, screen_size=self.screen_size)
dialog_info.exec_()
else:
dialog.show_message(title=self.i18n['warning'].capitalize(),
body=self.i18n['manage_window.info.no_info'].format(bold(pkg_info['__app__'].model.name)),
type_=MessageType.WARNING)
def begin_show_screenshots(self, pkg: PackageView): def begin_show_screenshots(self, pkg: PackageView):
self._begin_action(action_label=self.i18n['manage_window.status.screenshots'].format(bold(pkg.model.name)), self._begin_action(action_label=self.i18n['manage_window.status.screenshots'].format(bold(pkg.model.name)),

View File

@@ -316,6 +316,7 @@ manage_window.checkbox.show_details=Mostra detalls
manage_window.columns.installed=Installed manage_window.columns.installed=Installed
manage_window.columns.latest_version=Versió més recent manage_window.columns.latest_version=Versió més recent
manage_window.columns.update=Voleu actualitzar? manage_window.columns.update=Voleu actualitzar?
manage_window.info.no_info=There is no information available for {}
manage_window.label.apps_displayed.tip=Applications displayed / available manage_window.label.apps_displayed.tip=Applications displayed / available
manage_window.label.updates=Actualitzacions manage_window.label.updates=Actualitzacions
manage_window.name_filter.button_tooltip=Click here to filter apps by name manage_window.name_filter.button_tooltip=Click here to filter apps by name

View File

@@ -315,6 +315,7 @@ manage_window.checkbox.show_details=Details anzeigen
manage_window.columns.installed=Installed manage_window.columns.installed=Installed
manage_window.columns.latest_version=Neueste Version manage_window.columns.latest_version=Neueste Version
manage_window.columns.update=Upgraden? manage_window.columns.update=Upgraden?
manage_window.info.no_info=There is no information available for {}
manage_window.label.apps_displayed.tip=Applications displayed / available manage_window.label.apps_displayed.tip=Applications displayed / available
manage_window.label.updates=Updates manage_window.label.updates=Updates
manage_window.name_filter.button_tooltip=Click here to filter apps by name manage_window.name_filter.button_tooltip=Click here to filter apps by name

View File

@@ -316,6 +316,7 @@ manage_window.checkbox.show_details=Show details
manage_window.columns.installed=Installed manage_window.columns.installed=Installed
manage_window.columns.latest_version=Latest Version manage_window.columns.latest_version=Latest Version
manage_window.columns.update=Upgrade ? manage_window.columns.update=Upgrade ?
manage_window.info.no_info=There is no information available for {}
manage_window.label.apps_displayed.tip=Applications displayed / available manage_window.label.apps_displayed.tip=Applications displayed / available
manage_window.label.updates=Updates manage_window.label.updates=Updates
manage_window.name_filter.button_tooltip=Click here to filter apps by name manage_window.name_filter.button_tooltip=Click here to filter apps by name

View File

@@ -317,6 +317,7 @@ manage_window.checkbox.show_details=Mostrar detalles
manage_window.columns.installed=Instaladas manage_window.columns.installed=Instaladas
manage_window.columns.latest_version=Versión más reciente manage_window.columns.latest_version=Versión más reciente
manage_window.columns.update=¿Quiere actualizar? manage_window.columns.update=¿Quiere actualizar?
manage_window.info.no_info=No hay información disponible para {}
manage_window.label.apps_displayed.tip=Applicaciones mostradas / disponibles manage_window.label.apps_displayed.tip=Applicaciones mostradas / disponibles
manage_window.label.updates=Actualizaciones manage_window.label.updates=Actualizaciones
manage_window.name_filter.button_tooltip=Haga clic aquí para filtrar aplicaciones por nombre manage_window.name_filter.button_tooltip=Haga clic aquí para filtrar aplicaciones por nombre

View File

@@ -314,6 +314,7 @@ manage_window.checkbox.show_details=Détails
manage_window.columns.installed=Installé manage_window.columns.installed=Installé
manage_window.columns.latest_version=Dernière Version manage_window.columns.latest_version=Dernière Version
manage_window.columns.update=Mettre à jour ? manage_window.columns.update=Mettre à jour ?
manage_window.info.no_info=There is no information available for {}
manage_window.label.updates=Mises à jour manage_window.label.updates=Mises à jour
manage_window.name_filter.placeholder=Filtrer par nom manage_window.name_filter.placeholder=Filtrer par nom
manage_window.name_filter.tooltip=Taper ici pour filtrer les applications par nom manage_window.name_filter.tooltip=Taper ici pour filtrer les applications par nom

View File

@@ -317,6 +317,7 @@ manage_window.checkbox.show_details=Mostra dettagli
manage_window.columns.installed=Installed manage_window.columns.installed=Installed
manage_window.columns.latest_version=Ultima Versione manage_window.columns.latest_version=Ultima Versione
manage_window.columns.update=Upgrade ? manage_window.columns.update=Upgrade ?
manage_window.info.no_info=There is no information available for {}
manage_window.label.apps_displayed.tip=Applications displayed / available manage_window.label.apps_displayed.tip=Applications displayed / available
manage_window.label.updates=Aggiornamenti manage_window.label.updates=Aggiornamenti
manage_window.name_filter.button_tooltip=Click here to filter apps by name manage_window.name_filter.button_tooltip=Click here to filter apps by name

View File

@@ -316,6 +316,7 @@ manage_window.checkbox.show_details=Mostrar detalhes
manage_window.columns.installed=Instalado manage_window.columns.installed=Instalado
manage_window.columns.latest_version=Última Versão manage_window.columns.latest_version=Última Versão
manage_window.columns.update=Atualizar ? manage_window.columns.update=Atualizar ?
manage_window.info.no_info=Não há informação disponível para {}
manage_window.label.apps_displayed.tip=Aplicações exibidas / disponíveis manage_window.label.apps_displayed.tip=Aplicações exibidas / disponíveis
manage_window.label.updates=Atualizações manage_window.label.updates=Atualizações
manage_window.name_filter.button_tooltip=Clique aqui para filtrar aplicativos por nome manage_window.name_filter.button_tooltip=Clique aqui para filtrar aplicativos por nome

View File

@@ -315,6 +315,7 @@ manage_window.checkbox.show_details=Показать детали
manage_window.columns.installed=Installed manage_window.columns.installed=Installed
manage_window.columns.latest_version=Последняя версия manage_window.columns.latest_version=Последняя версия
manage_window.columns.update=Обновить? manage_window.columns.update=Обновить?
manage_window.info.no_info=There is no information available for {}
manage_window.label.apps_displayed.tip=Applications displayed / available manage_window.label.apps_displayed.tip=Applications displayed / available
manage_window.label.updates=Обновления manage_window.label.updates=Обновления
manage_window.name_filter.button_tooltip=Click here to filter apps by name manage_window.name_filter.button_tooltip=Click here to filter apps by name

View File

@@ -315,6 +315,7 @@ manage_window.checkbox.show_details=Detayları göster
manage_window.columns.installed=Yüklü manage_window.columns.installed=Yüklü
manage_window.columns.latest_version=Son sürüm manage_window.columns.latest_version=Son sürüm
manage_window.columns.update=Yükselt ? manage_window.columns.update=Yükselt ?
manage_window.info.no_info=There is no information available for {}
manage_window.label.apps_displayed.tip=Applications displayed / available manage_window.label.apps_displayed.tip=Applications displayed / available
manage_window.label.updates=Güncellemeler manage_window.label.updates=Güncellemeler
manage_window.name_filter.button_tooltip=Click here to filter apps by name manage_window.name_filter.button_tooltip=Click here to filter apps by name