fix: snap launch

This commit is contained in:
Vinicius Moreira
2019-09-18 18:01:01 -03:00
parent 3ac8a08ad8
commit 6c3e0e00bf
14 changed files with 48 additions and 32 deletions

View File

@@ -1,6 +1,7 @@
import os
import re
import shutil
import subprocess
import time
from pathlib import Path
from threading import Thread
@@ -580,3 +581,7 @@ class ArchManager(SoftwareManager):
def is_default_enabled(self) -> bool:
return False
def launch(self, pkg: ArchPackage):
if pkg.command:
subprocess.Popen(pkg.command.split(' '))

View File

@@ -102,9 +102,6 @@ class ArchPackage(SoftwarePackage):
# only returns if there is a desktop entry set for the application to avoid running command-line applications
return bool(self.desktop_entry)
def get_command(self) -> str:
return self.command
def get_publisher(self):
return self.maintainer

View File

@@ -1,3 +1,4 @@
import subprocess
from datetime import datetime
from threading import Thread
from typing import List, Set, Type
@@ -210,3 +211,6 @@ class FlatpakManager(SoftwareManager):
def is_default_enabled(self) -> bool:
return True
def launch(self, pkg: SoftwarePackage):
flatpak.run(pkg.id)

View File

@@ -278,3 +278,9 @@ def set_default_remotes():
def has_remotes_set() -> bool:
return bool(run_cmd('{} remotes'.format(BASE_CMD)).strip())
def run(app_id: str):
subprocess.Popen([BASE_CMD, 'run', app_id])

View File

@@ -59,9 +59,6 @@ class FlatpakApplication(SoftwarePackage):
if data.get(attr) and not getattr(self, attr):
setattr(self, attr, data[attr])
def get_command(self) -> str:
return "flatpak run {}".format(self.id)
def can_be_run(self) -> bool:
return self.installed and not self.runtime

View File

@@ -173,3 +173,6 @@ class SnapManager(SoftwareManager):
def is_default_enabled(self) -> bool:
return True
def launch(self, pkg: SnapApplication):
snap.run(pkg)

View File

@@ -79,9 +79,6 @@ class SnapApplication(SoftwarePackage):
if data.get('confinement'):
self.confinement = data['confinement']
def get_command(self) -> str:
return "snap run " + self.name
def can_be_run(self) -> bool:
return self.installed and self.is_application()

View File

@@ -4,6 +4,7 @@ import time
from typing import List
from bauh.commons.system import new_root_subprocess, run_cmd, new_subprocess
from bauh.gems.snap.model import SnapApplication
BASE_CMD = 'snap'
@@ -65,7 +66,7 @@ def get_info(app_name: str, attrs: tuple = None):
if not attrs or 'commands' in attrs:
commands = re.findall(r'commands:\s*\n*((\s+-\s.+\s*\n)+)', full_info_lines)
data['commands'] = commands[0][0].replace('-', '').strip().split('\n') if commands else None
data['commands'] = commands[0][0].strip().replace('- ', '').split('\n') if commands else None
return data
@@ -152,3 +153,11 @@ def downgrade_and_stream(app_name: str, root_password: str) -> subprocess.Popen:
def refresh_and_stream(app_name: str, root_password: str) -> subprocess.Popen:
return new_root_subprocess([BASE_CMD, 'refresh', app_name], root_password)
def run(app: SnapApplication):
info = get_info(app.name, 'commands')
if info.get('commands'):
subprocess.Popen([BASE_CMD, 'run', info['commands'][0]])