You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
2 years ago
|
import os
|
||
|
import subprocess
|
||
|
|
||
|
|
||
|
class CommandUtils:
|
||
|
@staticmethod
|
||
|
def run_command(
|
||
|
command: list,
|
||
|
flatpak_spawn: bool = None,
|
||
|
output: bool = False,
|
||
|
decode: bool = True,
|
||
|
):
|
||
|
"""
|
||
|
Keep flatpak_spawn as None to automatically assume its value based on
|
||
|
whether the app is running in a flatpak or not. Set it to True or False
|
||
|
to override this behavior.
|
||
|
"""
|
||
|
if flatpak_spawn is None and "FLATPAK_ID" in os.environ:
|
||
|
flatpak_spawn = True
|
||
|
|
||
|
if flatpak_spawn:
|
||
|
command = ["flatpak-spawn", "--host"] + command
|
||
|
|
||
|
if output:
|
||
|
res = subprocess.check_output(command)
|
||
|
if decode:
|
||
|
res = res.decode("utf-8").strip()
|
||
|
return res
|
||
|
|
||
|
return subprocess.Popen(command, stdout=subprocess.PIPE)
|
||
|
|
||
|
@staticmethod
|
||
|
def check_output(command: list, flatpak_spawn: bool = None, decode: bool = True):
|
||
|
"""Just a wrapper for convenience"""
|
||
|
return CommandUtils.run_command(
|
||
|
command, flatpak_spawn, output=True, decode=decode
|
||
|
)
|