[flatpak] new update model for flatpak 1.0.X

This commit is contained in:
Vinicius Moreira
2020-01-12 23:43:20 -03:00
parent e4e4567fba
commit 4144631f49
3 changed files with 16 additions and 6 deletions

View File

@@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Flatpak: - Flatpak:
- allow the user to choose the installation level: **user** or **system** - allow the user to choose the installation level: **user** or **system**
- able to deal with user and system applications / runtimes - able to deal with user and system applications / runtimes
- able to handle partial updates for Flatpak >= 1.5
- new configuration file located at **~/.config/bauh/flatpak.yml** ( it allows to define a default installation level ) - new configuration file located at **~/.config/bauh/flatpak.yml** ( it allows to define a default installation level )
### Improvements ### Improvements

View File

@@ -127,7 +127,7 @@ class FlatpakManager(SoftwareManager):
partial_model.update = True partial_model.update = True
models.append(partial_model) models.append(partial_model)
else: else:
model.update = app_json['ref'] in updates[0] if updates else None model.update = '{}/{}'.format(app_json['installation'], app_json['ref']) in update_map['full']
return SearchResult(models, None, len(models)) return SearchResult(models, None, len(models))
@@ -176,6 +176,9 @@ class FlatpakManager(SoftwareManager):
app_info['type'] = 'runtime' if app.runtime else 'app' app_info['type'] = 'runtime' if app.runtime else 'app'
app_info['description'] = strip_html(app.description) if app.description else '' app_info['description'] = strip_html(app.description) if app.description else ''
if app.installation:
app_info['installation'] = app.installation
if app_info.get('installed'): if app_info.get('installed'):
app_info['installed'] = app_info['installed'].replace('?', ' ') app_info['installed'] = app_info['installed'].replace('?', ' ')

View File

@@ -180,16 +180,22 @@ def list_updates_as_str(version: str) -> Dict[str, set]:
def read_updates(version: str, installation: str) -> Dict[str, set]: def read_updates(version: str, installation: str) -> Dict[str, set]:
res = {'partial': set(), 'full': set()}
if version < '1.2': if version < '1.2':
# TODO try:
return run_cmd('{} update --no-related --{}'.format(BASE_CMD, installation), ignore_return_code=True) output = run_cmd('{} update --no-related --no-deps --{}'.format(BASE_CMD, installation), ignore_return_code=True)
if 'Updating in {}'.format(installation) in output:
for line in output.split('Updating in {}:\n'.format(installation))[1].split('\n'):
if not line.startswith('Is this ok'):
res['full'].add('{}/{}'.format(installation, line.split('\t')[0].strip()))
except:
traceback.print_exc()
else: else:
updates = new_subprocess([BASE_CMD, 'update', '--{}'.format(installation)]).stdout updates = new_subprocess([BASE_CMD, 'update', '--{}'.format(installation)]).stdout
reg = r'[0-9]+\.\s+.+' if version >= '1.5.0' else r'[0-9]+\.\s+(\w+|\.)+\s+\w+\s+(\w|\.)+' reg = r'[0-9]+\.\s+.+' if version >= '1.5.0' else r'[0-9]+\.\s+(\w+|\.)+\s+\w+\s+(\w|\.)+'
res = {'partial': set(), 'full': set()}
try: try:
for o in new_subprocess(['grep', '-E', reg, '-o', '--color=never'], stdin=updates).stdout: for o in new_subprocess(['grep', '-E', reg, '-o', '--color=never'], stdin=updates).stdout:
if o: if o:
@@ -207,7 +213,7 @@ def read_updates(version: str, installation: str) -> Dict[str, set]:
except: except:
traceback.print_exc() traceback.print_exc()
return res return res
def downgrade(app_ref: str, commit: str, installation: str, root_password: str) -> subprocess.Popen: def downgrade(app_ref: str, commit: str, installation: str, root_password: str) -> subprocess.Popen: