mirror of
https://github.com/spalencsar/bearhub.git
synced 2026-07-07 03:34:15 +02:00
[feature][flatpak] able to ignore flatpak updates
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user