SysCommand now sets working_directory on SysCommandWorker. Also made it so the parent process moves back to the original working directory, leaving the child process in the target working directory. (#1142)
This commit is contained in:
parent
5a1bd83132
commit
80cee500e0
|
|
@ -352,7 +352,6 @@ class SysCommandWorker:
|
||||||
# only way to get the traceback without loosing it.
|
# only way to get the traceback without loosing it.
|
||||||
|
|
||||||
self.pid, self.child_fd = pty.fork()
|
self.pid, self.child_fd = pty.fork()
|
||||||
os.chdir(old_dir)
|
|
||||||
|
|
||||||
# https://stackoverflow.com/questions/4022600/python-pty-fork-how-does-it-work
|
# https://stackoverflow.com/questions/4022600/python-pty-fork-how-does-it-work
|
||||||
if not self.pid:
|
if not self.pid:
|
||||||
|
|
@ -371,6 +370,9 @@ class SysCommandWorker:
|
||||||
log(f"{self.cmd[0]} does not exist.", level=logging.ERROR, fg="red")
|
log(f"{self.cmd[0]} does not exist.", level=logging.ERROR, fg="red")
|
||||||
self.exit_code = 1
|
self.exit_code = 1
|
||||||
return False
|
return False
|
||||||
|
else:
|
||||||
|
# Only parent process moves back to the original working directory
|
||||||
|
os.chdir(old_dir)
|
||||||
|
|
||||||
self.started = time.time()
|
self.started = time.time()
|
||||||
self.poll_object.register(self.child_fd, EPOLLIN | EPOLLHUP)
|
self.poll_object.register(self.child_fd, EPOLLIN | EPOLLHUP)
|
||||||
|
|
@ -457,7 +459,14 @@ class SysCommand:
|
||||||
if self.session:
|
if self.session:
|
||||||
return self.session
|
return self.session
|
||||||
|
|
||||||
with SysCommandWorker(self.cmd, callbacks=self._callbacks, peak_output=self.peak_output, environment_vars=self.environment_vars, remove_vt100_escape_codes_from_lines=self.remove_vt100_escape_codes_from_lines) as session:
|
with SysCommandWorker(
|
||||||
|
self.cmd,
|
||||||
|
callbacks=self._callbacks,
|
||||||
|
peak_output=self.peak_output,
|
||||||
|
environment_vars=self.environment_vars,
|
||||||
|
remove_vt100_escape_codes_from_lines=self.remove_vt100_escape_codes_from_lines,
|
||||||
|
working_directory=self.working_directory) as session:
|
||||||
|
|
||||||
if not self.session:
|
if not self.session:
|
||||||
self.session = session
|
self.session = session
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue