Management panel shows update commands streams

This commit is contained in:
Vinicius Moreira
2019-06-18 17:01:13 -03:00
parent 833f7c142e
commit 3ffe2ad96f
9 changed files with 92 additions and 45 deletions

View File

@@ -11,8 +11,8 @@ class FlatpakController:
def refresh(self) -> List[dict]:
return self.model.read_installed()
def update(self, package_refs: List[str]) -> List[dict]:
return self.model.update_apps(package_refs)
def update(self, app_ref: str):
return self.model.update_app(app_ref)
def check_installed(self) -> bool:
version = self.model.get_version()

View File

@@ -68,8 +68,17 @@ def list_installed() -> List[dict]:
return []
def update(ref: str):
return bool(system.run_cmd('flatpak update -y ' + ref))
def update(app_ref: str) -> bool:
return bool(system.run_cmd('flatpak update -y ' + app_ref))
def update_and_stream(app_ref: str):
"""
Updates the app reference and streams Flatpak output,
:param app_ref:
:return:
"""
return system.stream_cmd(['flatpak', 'update', '-y', app_ref])
def list_updates_as_str():

View File

@@ -90,3 +90,19 @@ class FlatpakManager:
return [*self.apps]
return []
def update_app(self, ref: str):
"""
:param ref:
:return: the update command stream
"""
if self.apps:
package_found = [app for app in self.apps if app['ref'] == ref]
if package_found:
return flatpak.update_and_stream(ref)
return None

View File

@@ -1,13 +1,7 @@
import os
from pathlib import Path
local_resource_path = '{}/.local/share/fpakman/resources'.format(str(Path.home()))
app_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
def get_path(resource_path):
if os.path.exists(local_resource_path):
return local_resource_path + '/' + resource_path
else:
return app_dir + '/resources/' + resource_path
return app_dir + '/resources/' + resource_path

View File

@@ -1,6 +1,11 @@
import subprocess
from typing import List
def run_cmd(cmd: str, expected_code: int = 0, ignore_return_code: bool = False) -> str:
res = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE)
return res.stdout.decode() if ignore_return_code or res.returncode == expected_code else None
def stream_cmd(cmd: List[str]):
return subprocess.Popen(cmd, stdout=subprocess.PIPE).stdout