[feature][flatpak] able to ignore flatpak updates

This commit is contained in:
Vinícius Moreira
2020-05-18 18:20:31 -03:00
parent cca98602e6
commit ab8a0aaaef
7 changed files with 82 additions and 12 deletions

View File

@@ -709,8 +709,6 @@ class AppImageManager(SoftwareManager):
return ignored
def ignore_update(self, pkg: AppImage):
Path(CONFIG_DIR).mkdir(parents=True, exist_ok=True)
current_ignored = self._read_ignored_updates()
if pkg.name not in current_ignored:
@@ -720,6 +718,7 @@ class AppImageManager(SoftwareManager):
pkg.updates_ignored = True
def _write_ignored_updates(self, names: Set[str]):
Path(CONFIG_DIR).mkdir(parents=True, exist_ok=True)
ignored_list = [*names]
ignored_list.sort()

View File

@@ -1,6 +1,9 @@
import os
from pathlib import Path
from bauh.api.constants import CONFIG_PATH
ROOT_DIR = os.path.dirname(os.path.abspath(__file__))
SUGGESTIONS_FILE = 'https://raw.githubusercontent.com/vinifmor/bauh-files/master/flatpak/suggestions.txt'
CONFIG_FILE = '{}/.config/bauh/flatpak.yml'.format(Path.home())
CONFIG_FILE = '{}/flatpak.yml'.format(CONFIG_PATH)
CONFIG_DIR = '{}/flatpak'.format(CONFIG_PATH)
UPDATES_IGNORED_FILE = '{}/updates_ignored.txt'.format(CONFIG_DIR)

View File

@@ -1,6 +1,8 @@
import os
import traceback
from datetime import datetime
from math import floor
from pathlib import Path
from threading import Thread
from typing import List, Set, Type, Tuple
@@ -16,7 +18,7 @@ from bauh.commons import user
from bauh.commons.config import save_config
from bauh.commons.html import strip_html, bold
from bauh.commons.system import SystemProcess, ProcessHandler
from bauh.gems.flatpak import flatpak, SUGGESTIONS_FILE, CONFIG_FILE
from bauh.gems.flatpak import flatpak, SUGGESTIONS_FILE, CONFIG_FILE, UPDATES_IGNORED_FILE, CONFIG_DIR
from bauh.gems.flatpak.config import read_config
from bauh.gems.flatpak.constants import FLATHUB_API_URL
from bauh.gems.flatpak.model import FlatpakApplication
@@ -153,6 +155,14 @@ class FlatpakManager(SoftwareManager):
else:
model.update = '{}/{}'.format(app_json['installation'], app_json['ref']) in update_map['full']
if models:
ignored = self._read_ignored_updates()
if ignored:
for model in models:
if model.get_update_ignore_key() in ignored:
model.updates_ignored = True
return SearchResult(models, None, len(models))
def downgrade(self, pkg: FlatpakApplication, root_password: str, watcher: ProcessWatcher) -> bool:
@@ -536,3 +546,50 @@ class FlatpakManager(SoftwareManager):
return [*all_runtimes, *apps]
else:
return [*runtimes, *apps]
def _read_ignored_updates(self) -> Set[str]:
ignored = set()
if os.path.exists(UPDATES_IGNORED_FILE):
with open(UPDATES_IGNORED_FILE) as f:
ignored_txt = f.read()
for l in ignored_txt.split('\n'):
if l:
line_clean = l.strip()
if line_clean:
ignored.add(line_clean)
return ignored
def _write_ignored_updates(self, keys: Set[str]):
Path(CONFIG_DIR).mkdir(parents=True, exist_ok=True)
ignored_list = [*keys]
ignored_list.sort()
with open(UPDATES_IGNORED_FILE, 'w+') as f:
for ignored in ignored_list:
f.write('{}\n'.format(ignored))
def ignore_update(self, pkg: FlatpakApplication):
ignored_keys = self._read_ignored_updates()
pkg_key = pkg.get_update_ignore_key()
if pkg_key not in ignored_keys:
ignored_keys.add(pkg_key)
self._write_ignored_updates(ignored_keys)
pkg.updates_ignored = True
def revert_ignored_update(self, pkg: FlatpakApplication):
ignored_keys = self._read_ignored_updates()
if ignored_keys:
pkg_key = pkg.get_update_ignore_key()
if pkg_key in ignored_keys:
ignored_keys.remove(pkg_key)
self._write_ignored_updates(ignored_keys)
pkg.updates_ignored = False

View File

@@ -8,7 +8,7 @@ class FlatpakApplication(SoftwarePackage):
def __init__(self, id: str = None, name: str = None, version: str = None, latest_version: str = None, description: str = None,
branch: str = None, arch: str = None, origin: str = None, runtime: bool = False, ref: str = None, commit: str = None,
installation: str = None, i18n: I18n = None, partial: bool = False):
installation: str = None, i18n: I18n = None, partial: bool = False, updates_ignored: bool = False):
super(FlatpakApplication, self).__init__(id=id, name=name, version=version,
latest_version=latest_version, description=description)
self.ref = ref
@@ -22,6 +22,7 @@ class FlatpakApplication(SoftwarePackage):
self.i18n = i18n
self.base_id = None
self.base_ref = None
self.updates_ignored = updates_ignored
if runtime:
self.categories = ['runtime']
@@ -106,3 +107,12 @@ class FlatpakApplication(SoftwarePackage):
def supports_backup(self) -> bool:
return True
def supports_ignored_updates(self) -> bool:
return self.installed
def is_update_ignored(self) -> bool:
return self.updates_ignored
def get_update_ignore_key(self) -> str:
return '{}:{}:{}'.format(self.installation, self.id, self.branch)

View File

@@ -48,7 +48,7 @@ def apply_filters(pkgv: PackageView, filters: dict, info: dict):
hidden = not pkgv.model.categories or not [c for c in pkgv.model.categories if c.lower() == filters['category']]
if not hidden and filters['updates']:
hidden = not pkgv.model.update
hidden = not pkgv.model.update or pkgv.model.is_update_ignored()
if not hidden and filters['name']:
hidden = filters['name'] not in pkgv.model.name.lower()