[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 - 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) - 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 - minor UI improvements

View File

@@ -168,39 +168,27 @@ class FlatpakManager(SoftwareManager):
return SearchResult(models, None, len(models)) return SearchResult(models, None, len(models))
def downgrade(self, pkg: FlatpakApplication, root_password: str, watcher: ProcessWatcher) -> bool: def downgrade(self, pkg: FlatpakApplication, root_password: str, watcher: ProcessWatcher) -> bool:
if not self._make_exports_dir(watcher): if not self._make_exports_dir(watcher):
return False return False
handler = ProcessHandler(watcher)
pkg.commit = flatpak.get_commit(pkg.id, pkg.branch, pkg.installation)
watcher.change_progress(10) watcher.change_progress(10)
watcher.change_substatus(self.i18n['flatpak.downgrade.commits']) watcher.change_substatus(self.i18n['flatpak.downgrade.commits'])
commits = flatpak.get_app_commits(pkg.ref, pkg.origin, pkg.installation, handler)
if commits is None: history = self.get_history(pkg)
return False
try:
commit_idx = commits.index(pkg.commit)
except ValueError:
if commits[0] == '(null)':
commit_idx = 0
else:
return False
# downgrade is not possible if the app current commit in the first one: # downgrade is not possible if the app current commit in the first one:
if commit_idx == len(commits) - 1: if history.pkg_status_idx == len(history.history) - 1:
watcher.show_message(self.i18n['flatpak.downgrade.impossible.title'], self.i18n['flatpak.downgrade.impossible.body'], MessageType.WARNING) watcher.show_message(self.i18n['flatpak.downgrade.impossible.title'],
self.i18n['flatpak.downgrade.impossible.body'].format(bold(pkg.name)),
MessageType.ERROR)
return False 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_substatus(self.i18n['flatpak.downgrade.reverting'])
watcher.change_progress(50) watcher.change_progress(50)
success = handler.handle(SystemProcess(subproc=flatpak.downgrade(pkg.ref, commit, pkg.installation, root_password), success = ProcessHandler(watcher).handle(SystemProcess(subproc=flatpak.downgrade(pkg.ref, commit, pkg.installation, root_password),
success_phrases=['Changes complete.', 'Updates complete.'], success_phrases=['Changes complete.', 'Updates complete.'],
wrong_error_phrase='Warning')) wrong_error_phrase='Warning'))
watcher.change_progress(100) watcher.change_progress(100)
return success return success
@@ -311,13 +299,19 @@ class FlatpakManager(SoftwareManager):
commits = flatpak.get_app_commits_data(pkg.ref, pkg.origin, pkg.installation) commits = flatpak.get_app_commits_data(pkg.ref, pkg.origin, pkg.installation)
status_idx = 0 status_idx = 0
commit_found = False commit_found = False
for idx, data in enumerate(commits):
if data['commit'] == pkg.commit: if pkg.commit is None and len(commits) > 1 and commits[0]['commit'] == '(null)':
status_idx = idx del commits[0]
commit_found = True pkg.commit = commits[0]
break 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)': if not commit_found and pkg.commit and commits[0]['commit'] == '(null)':
commits[0]['commit'] = pkg.commit commits[0]['commit'] = pkg.commit

View File

@@ -2,7 +2,7 @@ import re
import subprocess import subprocess
import traceback import traceback
from datetime import datetime 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.api.exception import NoInternetException
from bauh.commons.system import new_subprocess, run_cmd, new_root_subprocess, SimpleProcess, ProcessHandler 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 from bauh.gems.flatpak import EXPORTS_PATH
RE_SEVERAL_SPACES = re.compile(r'\s+') 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): 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 '' return ''
def get_commit(app_id: str, branch: str, installation: str) -> str: def get_commit(app_id: str, branch: str, installation: str) -> Optional[str]:
info = new_subprocess(['flatpak', 'info', app_id, branch, '--{}'.format(installation)]) info = run_cmd('flatpak info {} {} --{}'.format(app_id, branch, installation))
for o in new_subprocess(['grep', 'Commit:', '--color=never'], stdin=info.stdout).stdout: if info:
if o: commits = RE_COMMIT.findall(info)
return o.decode().split(':')[1].strip() if commits:
return commits[0][1].strip()
def list_installed(version: str) -> List[dict]: 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=user
flatpak.config.install_level.user.tip=Application will be installed only for the current 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.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.impossible.title=Error
flatpak.downgrade.reverting=Sestà revertint la versió flatpak.downgrade.reverting=Sestà revertint la versió
flatpak.history.commit=revisió 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=user
flatpak.config.install_level.user.tip=Application will be installed only for the current user flatpak.config.install_level.user.tip=Application will be installed only for the current user
flatpak.downgrade.commits=Paket-Commits lesen 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.impossible.title=Fehler
flatpak.downgrade.reverting=Version zurücksetzen flatpak.downgrade.reverting=Version zurücksetzen
flatpak.history.commit=Commit 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=user
flatpak.config.install_level.user.tip=Application will be installed only for the current user flatpak.config.install_level.user.tip=Application will be installed only for the current user
flatpak.downgrade.commits=Reading package commits 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.impossible.title=Error
flatpak.downgrade.reverting=Reverting version flatpak.downgrade.reverting=Reverting version
flatpak.history.commit=commit 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=usuario
flatpak.config.install_level.user.tip=La aplicación se instalará solo para el usuario actual 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.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.impossible.title=Error
flatpak.downgrade.reverting=Revirtiendo la versión flatpak.downgrade.reverting=Revirtiendo la versión
flatpak.history.commit=commit 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=user
flatpak.config.install_level.user.tip=Application will be installed only for the current 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.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.impossible.title=Errore
flatpak.downgrade.reverting=Ripristino versione flatpak.downgrade.reverting=Ripristino versione
flatpak.history.commit=commit 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=usuário
flatpak.config.install_level.user.tip=Os aplicativos serão instalados somente para o usuário atual 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.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.impossible.title=Erro
flatpak.downgrade.reverting=Revertendo a versão flatpak.downgrade.reverting=Revertendo a versão
flatpak.history.commit=commit 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=Пользователь
flatpak.config.install_level.user.tip=Приложение будет установлено только для текущего пользователя flatpak.config.install_level.user.tip=Приложение будет установлено только для текущего пользователя
flatpak.downgrade.commits=Чтение коммитов пакета flatpak.downgrade.commits=Чтение коммитов пакета
flatpak.downgrade.impossible.body=Невозможно понизить версию: приложение находится в первой версии flatpak.downgrade.impossible.body=Невозможно понизить версию: {} находится в первой версии
flatpak.downgrade.impossible.title=Ошибка flatpak.downgrade.impossible.title=Ошибка
flatpak.downgrade.reverting=Возврат версии flatpak.downgrade.reverting=Возврат версии
flatpak.history.commit=Коммит 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=kullanıcı
flatpak.config.install_level.user.tip=Uygulama yalnızca geçerli kullanıcı için yüklenecek 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.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.impossible.title=Hata
flatpak.downgrade.reverting=Sürüm geri döndürülüyor flatpak.downgrade.reverting=Sürüm geri döndürülüyor
flatpak.history.commit=işlem flatpak.history.commit=işlem