mirror of
https://github.com/spalencsar/bearhub.git
synced 2026-07-06 22:54:16 +02:00
[flatpak] improvement -> downgrade function refactored
This commit is contained in:
@@ -23,6 +23,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||
|
||||
- Flatpak
|
||||
- creating the exports path **~/.local/share/flatpak/exports/share** (if it does not exist) and adding it to install/upgrade/downgrade/remove commands path to prevent warning messages. [#128](https://github.com/vinifmor/bauh/issues/128)
|
||||
- downgrade function refactored
|
||||
|
||||
- minor UI improvements
|
||||
|
||||
|
||||
@@ -168,39 +168,27 @@ class FlatpakManager(SoftwareManager):
|
||||
return SearchResult(models, None, len(models))
|
||||
|
||||
def downgrade(self, pkg: FlatpakApplication, root_password: str, watcher: ProcessWatcher) -> bool:
|
||||
|
||||
if not self._make_exports_dir(watcher):
|
||||
return False
|
||||
|
||||
handler = ProcessHandler(watcher)
|
||||
pkg.commit = flatpak.get_commit(pkg.id, pkg.branch, pkg.installation)
|
||||
|
||||
watcher.change_progress(10)
|
||||
watcher.change_substatus(self.i18n['flatpak.downgrade.commits'])
|
||||
commits = flatpak.get_app_commits(pkg.ref, pkg.origin, pkg.installation, handler)
|
||||
|
||||
if commits is None:
|
||||
return False
|
||||
|
||||
try:
|
||||
commit_idx = commits.index(pkg.commit)
|
||||
except ValueError:
|
||||
if commits[0] == '(null)':
|
||||
commit_idx = 0
|
||||
else:
|
||||
return False
|
||||
history = self.get_history(pkg)
|
||||
|
||||
# downgrade is not possible if the app current commit in the first one:
|
||||
if commit_idx == len(commits) - 1:
|
||||
watcher.show_message(self.i18n['flatpak.downgrade.impossible.title'], self.i18n['flatpak.downgrade.impossible.body'], MessageType.WARNING)
|
||||
if history.pkg_status_idx == len(history.history) - 1:
|
||||
watcher.show_message(self.i18n['flatpak.downgrade.impossible.title'],
|
||||
self.i18n['flatpak.downgrade.impossible.body'].format(bold(pkg.name)),
|
||||
MessageType.ERROR)
|
||||
return False
|
||||
|
||||
commit = commits[commit_idx + 1]
|
||||
commit = history.history[history.pkg_status_idx + 1]['commit']
|
||||
watcher.change_substatus(self.i18n['flatpak.downgrade.reverting'])
|
||||
watcher.change_progress(50)
|
||||
success = handler.handle(SystemProcess(subproc=flatpak.downgrade(pkg.ref, commit, pkg.installation, root_password),
|
||||
success_phrases=['Changes complete.', 'Updates complete.'],
|
||||
wrong_error_phrase='Warning'))
|
||||
success = ProcessHandler(watcher).handle(SystemProcess(subproc=flatpak.downgrade(pkg.ref, commit, pkg.installation, root_password),
|
||||
success_phrases=['Changes complete.', 'Updates complete.'],
|
||||
wrong_error_phrase='Warning'))
|
||||
watcher.change_progress(100)
|
||||
return success
|
||||
|
||||
@@ -311,13 +299,19 @@ class FlatpakManager(SoftwareManager):
|
||||
commits = flatpak.get_app_commits_data(pkg.ref, pkg.origin, pkg.installation)
|
||||
|
||||
status_idx = 0
|
||||
|
||||
commit_found = False
|
||||
for idx, data in enumerate(commits):
|
||||
if data['commit'] == pkg.commit:
|
||||
status_idx = idx
|
||||
commit_found = True
|
||||
break
|
||||
|
||||
if pkg.commit is None and len(commits) > 1 and commits[0]['commit'] == '(null)':
|
||||
del commits[0]
|
||||
pkg.commit = commits[0]
|
||||
commit_found = True
|
||||
|
||||
if not commit_found:
|
||||
for idx, data in enumerate(commits):
|
||||
if data['commit'] == pkg.commit:
|
||||
status_idx = idx
|
||||
commit_found = True
|
||||
break
|
||||
|
||||
if not commit_found and pkg.commit and commits[0]['commit'] == '(null)':
|
||||
commits[0]['commit'] = pkg.commit
|
||||
|
||||
@@ -2,7 +2,7 @@ import re
|
||||
import subprocess
|
||||
import traceback
|
||||
from datetime import datetime
|
||||
from typing import List, Dict, Set, Iterable
|
||||
from typing import List, Dict, Set, Iterable, Optional
|
||||
|
||||
from bauh.api.exception import NoInternetException
|
||||
from bauh.commons.system import new_subprocess, run_cmd, new_root_subprocess, SimpleProcess, ProcessHandler
|
||||
@@ -10,6 +10,7 @@ from bauh.commons.util import size_to_byte
|
||||
from bauh.gems.flatpak import EXPORTS_PATH
|
||||
|
||||
RE_SEVERAL_SPACES = re.compile(r'\s+')
|
||||
RE_COMMIT = re.compile(r'(Latest commit|Commit)\s*:\s*(.+)')
|
||||
|
||||
|
||||
def get_app_info_fields(app_id: str, branch: str, installation: str, fields: List[str] = [], check_runtime: bool = False):
|
||||
@@ -76,12 +77,13 @@ def get_app_info(app_id: str, branch: str, installation: str):
|
||||
return ''
|
||||
|
||||
|
||||
def get_commit(app_id: str, branch: str, installation: str) -> str:
|
||||
info = new_subprocess(['flatpak', 'info', app_id, branch, '--{}'.format(installation)])
|
||||
def get_commit(app_id: str, branch: str, installation: str) -> Optional[str]:
|
||||
info = run_cmd('flatpak info {} {} --{}'.format(app_id, branch, installation))
|
||||
|
||||
for o in new_subprocess(['grep', 'Commit:', '--color=never'], stdin=info.stdout).stdout:
|
||||
if o:
|
||||
return o.decode().split(':')[1].strip()
|
||||
if info:
|
||||
commits = RE_COMMIT.findall(info)
|
||||
if commits:
|
||||
return commits[0][1].strip()
|
||||
|
||||
|
||||
def list_installed(version: str) -> List[dict]:
|
||||
|
||||
@@ -5,7 +5,7 @@ flatpak.config.install_level.system.tip=Applications will be installed for all t
|
||||
flatpak.config.install_level.user=user
|
||||
flatpak.config.install_level.user.tip=Application will be installed only for the current user
|
||||
flatpak.downgrade.commits=S’estan llegint les revisions del paquet
|
||||
flatpak.downgrade.impossible.body=No s’ha pogut revertir la versió: l’aplicació és a la seva primera versió
|
||||
flatpak.downgrade.impossible.body=No s’ha pogut revertir la versió: {} és a la seva primera versió
|
||||
flatpak.downgrade.impossible.title=Error
|
||||
flatpak.downgrade.reverting=S’està revertint la versió
|
||||
flatpak.history.commit=revisió
|
||||
|
||||
@@ -5,7 +5,7 @@ flatpak.config.install_level.system.tip=Applications will be installed for all t
|
||||
flatpak.config.install_level.user=user
|
||||
flatpak.config.install_level.user.tip=Application will be installed only for the current user
|
||||
flatpak.downgrade.commits=Paket-Commits lesen
|
||||
flatpak.downgrade.impossible.body=Downgrade nicht möglich. Dies ist die erste Version der App
|
||||
flatpak.downgrade.impossible.body=Downgrade nicht möglich. Dies ist die erste Version der {}
|
||||
flatpak.downgrade.impossible.title=Fehler
|
||||
flatpak.downgrade.reverting=Version zurücksetzen
|
||||
flatpak.history.commit=Commit
|
||||
|
||||
@@ -5,7 +5,7 @@ flatpak.config.install_level.system.tip=Applications will be installed for all t
|
||||
flatpak.config.install_level.user=user
|
||||
flatpak.config.install_level.user.tip=Application will be installed only for the current user
|
||||
flatpak.downgrade.commits=Reading package commits
|
||||
flatpak.downgrade.impossible.body=Impossible to downgrade: the app is in its first version
|
||||
flatpak.downgrade.impossible.body=Impossible to downgrade: {} is in its first version
|
||||
flatpak.downgrade.impossible.title=Error
|
||||
flatpak.downgrade.reverting=Reverting version
|
||||
flatpak.history.commit=commit
|
||||
|
||||
@@ -5,7 +5,7 @@ flatpak.config.install_level.system.tip=Se instalarán aplicaciones para todos l
|
||||
flatpak.config.install_level.user=usuario
|
||||
flatpak.config.install_level.user.tip=La aplicación se instalará solo para el usuario actual
|
||||
flatpak.downgrade.commits=Leyendo commits del paquete
|
||||
flatpak.downgrade.impossible.body=Imposible revertir la versión: el aplicativo está en su primera versión
|
||||
flatpak.downgrade.impossible.body=Imposible revertir la versión: {} está en su primera versión
|
||||
flatpak.downgrade.impossible.title=Error
|
||||
flatpak.downgrade.reverting=Revirtiendo la versión
|
||||
flatpak.history.commit=commit
|
||||
|
||||
@@ -5,7 +5,7 @@ flatpak.config.install_level.system.tip=Applications will be installed for all t
|
||||
flatpak.config.install_level.user=user
|
||||
flatpak.config.install_level.user.tip=Application will be installed only for the current user
|
||||
flatpak.downgrade.commits=lettura commits del pacchetto
|
||||
flatpak.downgrade.impossible.body=Iimpossibile effettuare il downgrade: l'app è nella sua prima versione
|
||||
flatpak.downgrade.impossible.body=Iimpossibile effettuare il downgrade: {} è nella sua prima versione
|
||||
flatpak.downgrade.impossible.title=Errore
|
||||
flatpak.downgrade.reverting=Ripristino versione
|
||||
flatpak.history.commit=commit
|
||||
|
||||
@@ -5,7 +5,7 @@ flatpak.config.install_level.system.tip=Os aplicativos serão instalados para to
|
||||
flatpak.config.install_level.user=usuário
|
||||
flatpak.config.install_level.user.tip=Os aplicativos serão instalados somente para o usuário atual
|
||||
flatpak.downgrade.commits=Lendo os commits do pacote
|
||||
flatpak.downgrade.impossible.body=Impossível reverter a versão: o aplicativo está na sua primeira versão
|
||||
flatpak.downgrade.impossible.body=Impossível reverter a versão: {} está na sua primeira versão
|
||||
flatpak.downgrade.impossible.title=Erro
|
||||
flatpak.downgrade.reverting=Revertendo a versão
|
||||
flatpak.history.commit=commit
|
||||
|
||||
@@ -5,7 +5,7 @@ flatpak.config.install_level.system.tip=Приложения будут уста
|
||||
flatpak.config.install_level.user=Пользователь
|
||||
flatpak.config.install_level.user.tip=Приложение будет установлено только для текущего пользователя
|
||||
flatpak.downgrade.commits=Чтение коммитов пакета
|
||||
flatpak.downgrade.impossible.body=Невозможно понизить версию: приложение находится в первой версии
|
||||
flatpak.downgrade.impossible.body=Невозможно понизить версию: {} находится в первой версии
|
||||
flatpak.downgrade.impossible.title=Ошибка
|
||||
flatpak.downgrade.reverting=Возврат версии
|
||||
flatpak.history.commit=Коммит
|
||||
|
||||
@@ -5,7 +5,7 @@ flatpak.config.install_level.system.tip=Uygulamalar tüm cihaz kullanıcıları
|
||||
flatpak.config.install_level.user=kullanıcı
|
||||
flatpak.config.install_level.user.tip=Uygulama yalnızca geçerli kullanıcı için yüklenecek
|
||||
flatpak.downgrade.commits=Paket notları okunuyor
|
||||
flatpak.downgrade.impossible.body=Sürüm düşürme imkansız: uygulama zaten ilk sürümünde
|
||||
flatpak.downgrade.impossible.body=Sürüm düşürme imkansız: {} zaten ilk sürümünde
|
||||
flatpak.downgrade.impossible.title=Hata
|
||||
flatpak.downgrade.reverting=Sürüm geri döndürülüyor
|
||||
flatpak.history.commit=işlem
|
||||
|
||||
Reference in New Issue
Block a user