From 3e13b64e4c22a3b5d447cd27fcc45d34ab0c83fd Mon Sep 17 00:00:00 2001 From: Vinicius Moreira Date: Sat, 12 Mar 2022 12:17:22 -0300 Subject: [PATCH] [arch] feature: able to filter outdated packages by the new 'out of date' category (AUR only) --- CHANGELOG.md | 1 + bauh/gems/arch/mapper.py | 8 ++++++-- bauh/gems/arch/model.py | 16 +++++++++++++--- bauh/gems/arch/resources/locale/ca | 1 + bauh/gems/arch/resources/locale/de | 1 + bauh/gems/arch/resources/locale/en | 1 + bauh/gems/arch/resources/locale/es | 1 + bauh/gems/arch/resources/locale/fr | 1 + bauh/gems/arch/resources/locale/it | 1 + bauh/gems/arch/resources/locale/pt | 1 + bauh/gems/arch/resources/locale/ru | 1 + bauh/gems/arch/resources/locale/tr | 1 + 12 files changed, 29 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fd02d7c9..a9cc334a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Arch - AUR: - able to filter orphan packages by the new "orphan" category [#236](https://github.com/vinifmor/bauh/issues/236) + - able to filter outdated packages by the new "out of date" category [#236](https://github.com/vinifmor/bauh/issues/236) ### Improvements - General diff --git a/bauh/gems/arch/mapper.py b/bauh/gems/arch/mapper.py index eeb01a55..b8a5a2f0 100644 --- a/bauh/gems/arch/mapper.py +++ b/bauh/gems/arch/mapper.py @@ -94,11 +94,15 @@ class AURDataMapper: self.fill_api_data(app, apidata, fill_version=not data) - if app.orphan: + if app.orphan or app.out_of_date: if app.categories is None: app.categories = [] - app.categories.append('orphan') + if app.orphan: + app.categories.append('orphan') + + if app.out_of_date: + app.categories.append('out_of_date') return app diff --git a/bauh/gems/arch/model.py b/bauh/gems/arch/model.py index 1f93469d..7f6b27ba 100644 --- a/bauh/gems/arch/model.py +++ b/bauh/gems/arch/model.py @@ -14,6 +14,7 @@ class ArchPackage(SoftwarePackage): __action_reinstall: Optional[CustomSoftwareAction] = None __action_ignore_rebuild_check: Optional[CustomSoftwareAction] = None __cached_attrs: Optional[Tuple[str, ...]] = None + __dynamic_categories: Optional[Tuple[str, ...]] = None @classmethod def action_allow_rebuild_check(cls) -> CustomSoftwareAction: @@ -88,6 +89,13 @@ class ArchPackage(SoftwarePackage): return cls.__cached_attrs + @classmethod + def dynamic_categories(cls) -> Tuple[str, ...]: + if cls.__dynamic_categories is None: + cls.__dynamic_categories = ('orphan', 'out_of_date') + + return cls.__dynamic_categories + def __init__(self, name: str = None, version: str = None, latest_version: str = None, description: str = None, package_base: str = None, votes: int = None, popularity: float = None, first_submitted: Optional[int] = None, last_modified: Optional[int] = None, @@ -180,6 +188,11 @@ class ArchPackage(SoftwarePackage): val = getattr(self, a) if val: + if a == 'categories' and isinstance(val, list): + for cat in self.dynamic_categories(): + if cat in val: + val.remove(cat) + cache[a] = val return cache @@ -189,9 +202,6 @@ class ArchPackage(SoftwarePackage): for a in self.cached_attrs(): val = data.get(a) if val: - if a == 'categories' and isinstance(val, list) and 'orphan' in val: - val.remove('orphan') - setattr(self, a, val) if a == 'icon_path': diff --git a/bauh/gems/arch/resources/locale/ca b/bauh/gems/arch/resources/locale/ca index daeea02f..4a90cbb2 100644 --- a/bauh/gems/arch/resources/locale/ca +++ b/bauh/gems/arch/resources/locale/ca @@ -303,6 +303,7 @@ arch_repo.history.1_version=versió arch_repo.history.2_release=publicació arch_repo.history.3_date=data category.orphan=orphan +category.out_of_date=out of date aur.history.1_version=versió aur.history.2_release=publicació aur.history.3_date=data diff --git a/bauh/gems/arch/resources/locale/de b/bauh/gems/arch/resources/locale/de index 1cf0e8a4..37e579bd 100644 --- a/bauh/gems/arch/resources/locale/de +++ b/bauh/gems/arch/resources/locale/de @@ -306,6 +306,7 @@ aur.history.1_version=Version aur.history.2_release=Release aur.history.3_date=Datum category.orphan=orphan +category.out_of_date=out of date gem.arch.info=Software packages available for distributions based on Arch Linux gem.arch.label=Arch gem.arch.type.arch_repo.label=Arch - Repository diff --git a/bauh/gems/arch/resources/locale/en b/bauh/gems/arch/resources/locale/en index 33bad352..9a139db8 100644 --- a/bauh/gems/arch/resources/locale/en +++ b/bauh/gems/arch/resources/locale/en @@ -306,6 +306,7 @@ aur.history.1_version=version aur.history.2_release=release aur.history.3_date=date category.orphan=orphan +category.out_of_date=out of date gem.arch.info=Software packages available for distributions based on Arch Linux gem.arch.label=Arch gem.arch.type.arch_repo.label=Arch - Repository diff --git a/bauh/gems/arch/resources/locale/es b/bauh/gems/arch/resources/locale/es index c44f008d..7b794f1a 100644 --- a/bauh/gems/arch/resources/locale/es +++ b/bauh/gems/arch/resources/locale/es @@ -306,6 +306,7 @@ aur.history.1_version=versión aur.history.2_release=lanzamiento aur.history.3_date=fecha category.orphan=huérfano +category.out_of_date=desactualizado gem.arch.info=Paquetes de software disponibles para distribuciones basadas en Arch Linux gem.arch.label=Arch gem.arch.type.arch_repo.label=Arch - Repositorio diff --git a/bauh/gems/arch/resources/locale/fr b/bauh/gems/arch/resources/locale/fr index 8e961668..e7608733 100644 --- a/bauh/gems/arch/resources/locale/fr +++ b/bauh/gems/arch/resources/locale/fr @@ -306,6 +306,7 @@ aur.history.1_version=version aur.history.2_release=livraison aur.history.3_date=date category.orphan=orphan +category.out_of_date=out of date gem.arch.info=Paquets logiciels disponibles pour les distributions basées sur Arch Linux gem.arch.label=Arch gem.arch.type.arch_repo.label=Arch - Dépôt diff --git a/bauh/gems/arch/resources/locale/it b/bauh/gems/arch/resources/locale/it index 92259e0f..f842df16 100644 --- a/bauh/gems/arch/resources/locale/it +++ b/bauh/gems/arch/resources/locale/it @@ -306,6 +306,7 @@ aur.history.1_version=versione aur.history.2_release=rilascio aur.history.3_date=data category.orphan=orphan +category.out_of_date=out of date gem.arch.info=Software packages available for distributions based on Arch Linux gem.arch.label=Arch gem.arch.type.arch_repo.label=Arch - Deposito diff --git a/bauh/gems/arch/resources/locale/pt b/bauh/gems/arch/resources/locale/pt index 916fedc1..434eb9f9 100644 --- a/bauh/gems/arch/resources/locale/pt +++ b/bauh/gems/arch/resources/locale/pt @@ -305,6 +305,7 @@ aur.history.1_version=versão aur.history.2_release=lançamento aur.history.3_date=data category.orphan=órfão +category.out_of_date=desatualizado gem.arch.info=Pacotes de software disponíveis para distribuições baseadas em Arch Linux gem.arch.label=Arch gem.arch.type.arch_repo.label=Arch - Repositório diff --git a/bauh/gems/arch/resources/locale/ru b/bauh/gems/arch/resources/locale/ru index aba6dce6..a3f4c91e 100644 --- a/bauh/gems/arch/resources/locale/ru +++ b/bauh/gems/arch/resources/locale/ru @@ -306,6 +306,7 @@ aur.history.1_version=Версия aur.history.2_release=Выпуск aur.history.3_date=Дата category.orphan=orphan +category.out_of_date=out of date gem.arch.info=Пакеты программного обеспечения, доступные для дистрибутивов на базе Arch Linux gem.arch.label=Arch gem.arch.type.arch_repo.label=Arch - Repository diff --git a/bauh/gems/arch/resources/locale/tr b/bauh/gems/arch/resources/locale/tr index 4441c9df..116b6aa5 100644 --- a/bauh/gems/arch/resources/locale/tr +++ b/bauh/gems/arch/resources/locale/tr @@ -306,6 +306,7 @@ aur.history.1_version=sürüm aur.history.2_release=sürüm inşa aur.history.3_date=tarih category.orphan=orphan +category.out_of_date=out of date gem.arch.info=Arch Linux tabanlı dağıtımlar için mevcut yazılım paketleri gem.arch.label=Arch gem.arch.type.arch_repo.label=Arch - Depoları