Modifying to enable piping in custom environment variables. This is required to disable systemd coloring and paging when querying for service states. Otherwise it returns unreliable data that can cause hanging.
This commit is contained in:
parent
4750b0b2a1
commit
fad9f40a83
|
|
@ -76,7 +76,7 @@ class sys_command():#Thread):
|
|||
"""
|
||||
Stolen from archinstall_gui
|
||||
"""
|
||||
def __init__(self, cmd, callback=None, start_callback=None, *args, **kwargs):
|
||||
def __init__(self, cmd, callback=None, start_callback=None, environment_vars={}, *args, **kwargs):
|
||||
kwargs.setdefault("worker_id", gen_uid())
|
||||
kwargs.setdefault("emulate", False)
|
||||
kwargs.setdefault("suppress_errors", False)
|
||||
|
|
@ -93,6 +93,7 @@ class sys_command():#Thread):
|
|||
raise ValueError(f'Incorrect string to split: {cmd}\n{e}')
|
||||
self.args = args
|
||||
self.kwargs = kwargs
|
||||
self.environment_vars = environment_vars
|
||||
|
||||
self.kwargs.setdefault("worker", None)
|
||||
self.callback = callback
|
||||
|
|
@ -159,7 +160,7 @@ class sys_command():#Thread):
|
|||
# Replace child process with our main process
|
||||
if not self.kwargs['emulate']:
|
||||
try:
|
||||
os.execv(self.cmd[0], self.cmd)
|
||||
os.execve(self.cmd[0], self.cmd, {**os.environ, **self.environment_vars})
|
||||
except FileNotFoundError:
|
||||
self.status = 'done'
|
||||
self.log(f"{self.cmd[0]} does not exist.", level=LOG_LEVELS.Debug)
|
||||
|
|
|
|||
|
|
@ -7,6 +7,6 @@ def service_state(service_name: str):
|
|||
if os.path.splitext(service_name)[1] != '.service':
|
||||
service_name += '.service' # Just to be safe
|
||||
|
||||
state = b''.join(sys_command(f'systemctl show -p SubState --value {service_name}'))
|
||||
state = b''.join(sys_command(f'systemctl show --no-pager -p SubState --value {service_name}', environment_vars={'SYSTEMD_COLORS' : '0'}))
|
||||
|
||||
return state.strip().decode('UTF-8')
|
||||
|
|
|
|||
Loading…
Reference in New Issue