From 2ff5aa7f633fd64f3629e321a510fd45ad38a786 Mon Sep 17 00:00:00 2001 From: Vinicius Moreira Date: Sat, 12 Mar 2022 12:02:40 -0300 Subject: [PATCH] [arch] feature: able to filter orphan packages by the new 'orphan' category (AUR only) --- CHANGELOG.md | 4 ++++ bauh/gems/arch/mapper.py | 11 +++++++++-- bauh/gems/arch/model.py | 3 +++ 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, 25 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2edc23a8..fd02d7c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,10 @@ 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) + ### Improvements - General - minor memory improvements diff --git a/bauh/gems/arch/mapper.py b/bauh/gems/arch/mapper.py index 47ae12cd..eeb01a55 100644 --- a/bauh/gems/arch/mapper.py +++ b/bauh/gems/arch/mapper.py @@ -1,6 +1,6 @@ import logging import os -from typing import Optional +from typing import Optional, List, Dict from bauh.api.abstract.model import PackageStatus from bauh.api.http import HttpClient @@ -80,7 +80,7 @@ class AURDataMapper: if res and res.status_code == 200 and res.text: pkg.pkgbuild = res.text - def map_api_data(self, apidata: dict, pkgs_installed: Optional[dict], categories: dict) -> ArchPackage: + def map_api_data(self, apidata: dict, pkgs_installed: Optional[dict], categories: Dict[str, List[str]]) -> ArchPackage: data = pkgs_installed.get(apidata.get('Name')) if pkgs_installed else None app = ArchPackage(name=apidata.get('Name'), installed=bool(data), repository='aur', i18n=self.i18n) app.status = PackageStatus.LOADING_DATA @@ -93,6 +93,13 @@ class AURDataMapper: app.description = data.get('description') self.fill_api_data(app, apidata, fill_version=not data) + + if app.orphan: + if app.categories is None: + app.categories = [] + + app.categories.append('orphan') + return app def check_update(self, pkg: ArchPackage, last_modified: Optional[int]) -> bool: diff --git a/bauh/gems/arch/model.py b/bauh/gems/arch/model.py index 674e4bd5..1f93469d 100644 --- a/bauh/gems/arch/model.py +++ b/bauh/gems/arch/model.py @@ -189,6 +189,9 @@ 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 82f14ee2..daeea02f 100644 --- a/bauh/gems/arch/resources/locale/ca +++ b/bauh/gems/arch/resources/locale/ca @@ -302,6 +302,7 @@ arch.warning.aur_missing_dep={} seems not to be installed. It will not be possib arch_repo.history.1_version=versió arch_repo.history.2_release=publicació arch_repo.history.3_date=data +category.orphan=orphan 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 e7b5969c..1cf0e8a4 100644 --- a/bauh/gems/arch/resources/locale/de +++ b/bauh/gems/arch/resources/locale/de @@ -305,6 +305,7 @@ arch_repo.history.3_date=Datum aur.history.1_version=Version aur.history.2_release=Release aur.history.3_date=Datum +category.orphan=orphan 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 50b092a6..33bad352 100644 --- a/bauh/gems/arch/resources/locale/en +++ b/bauh/gems/arch/resources/locale/en @@ -305,6 +305,7 @@ arch_repo.history.3_date=date aur.history.1_version=version aur.history.2_release=release aur.history.3_date=date +category.orphan=orphan 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 645616b4..c44f008d 100644 --- a/bauh/gems/arch/resources/locale/es +++ b/bauh/gems/arch/resources/locale/es @@ -305,6 +305,7 @@ arch_repo.history.3_date=fecha aur.history.1_version=versión aur.history.2_release=lanzamiento aur.history.3_date=fecha +category.orphan=huérfano 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 340508b2..8e961668 100644 --- a/bauh/gems/arch/resources/locale/fr +++ b/bauh/gems/arch/resources/locale/fr @@ -305,6 +305,7 @@ arch_repo.history.3_date=date aur.history.1_version=version aur.history.2_release=livraison aur.history.3_date=date +category.orphan=orphan 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 50417bd0..92259e0f 100644 --- a/bauh/gems/arch/resources/locale/it +++ b/bauh/gems/arch/resources/locale/it @@ -305,6 +305,7 @@ arch_repo.history.3_date=data aur.history.1_version=versione aur.history.2_release=rilascio aur.history.3_date=data +category.orphan=orphan 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 863e1953..916fedc1 100644 --- a/bauh/gems/arch/resources/locale/pt +++ b/bauh/gems/arch/resources/locale/pt @@ -304,6 +304,7 @@ arch_repo.history.3_date=data aur.history.1_version=versão aur.history.2_release=lançamento aur.history.3_date=data +category.orphan=órfão 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 a1a62ddc..aba6dce6 100644 --- a/bauh/gems/arch/resources/locale/ru +++ b/bauh/gems/arch/resources/locale/ru @@ -305,6 +305,7 @@ arch_repo.history.3_date=date aur.history.1_version=Версия aur.history.2_release=Выпуск aur.history.3_date=Дата +category.orphan=orphan 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 7c77862d..4441c9df 100644 --- a/bauh/gems/arch/resources/locale/tr +++ b/bauh/gems/arch/resources/locale/tr @@ -305,6 +305,7 @@ arch_repo.history.3_date=tarih aur.history.1_version=sürüm aur.history.2_release=sürüm inşa aur.history.3_date=tarih +category.orphan=orphan 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ı