[flatpak] improvement -> downgrade function refactored

This commit is contained in:
Vinicius Moreira
2020-08-12 11:46:55 -03:00
parent de29084e9d
commit dd8683063b
11 changed files with 38 additions and 41 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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]:

View File

@@ -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=Sestan llegint les revisions del paquet
flatpak.downgrade.impossible.body=No sha pogut revertir la versió: laplicació és a la seva primera versió
flatpak.downgrade.impossible.body=No sha pogut revertir la versió: {} és a la seva primera versió
flatpak.downgrade.impossible.title=Error
flatpak.downgrade.reverting=Sestà revertint la versió
flatpak.history.commit=revisió

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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=Коммит

View File

@@ -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