From 7843cbcd9cb6fbfa496dc95a4fd3b4d00450ea4b Mon Sep 17 00:00:00 2001 From: chriskiehl Date: Mon, 12 Feb 2018 19:29:29 -0800 Subject: [PATCH] Make shell option in Popen configurable --- gooey/gui/containers/application.py | 3 ++- gooey/gui/processor.py | 8 ++++---- gooey/python_bindings/config_generator.py | 1 + 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/gooey/gui/containers/application.py b/gooey/gui/containers/application.py index 4bfe762..6cc21c3 100644 --- a/gooey/gui/containers/application.py +++ b/gooey/gui/containers/application.py @@ -47,7 +47,8 @@ class GooeyApplication(wx.Frame): self.clientRunner = ProcessController( self.buildSpec.get('progress_regex'), self.buildSpec.get('progress_expr'), - self.buildSpec.get('encoding') + self.buildSpec.get('encoding'), + self.buildSpec.get('requires_shell'), ) pub.subscribe(events.WINDOW_START, self.onStart) diff --git a/gooey/gui/processor.py b/gooey/gui/processor.py index c29bba8..e4050a2 100644 --- a/gooey/gui/processor.py +++ b/gooey/gui/processor.py @@ -13,12 +13,13 @@ from gooey.util.functional import unit, bind class ProcessController(object): - def __init__(self, progress_regex, progress_expr, encoding): + def __init__(self, progress_regex, progress_expr, encoding, shell=True): self._process = None self.progress_regex = progress_regex self.progress_expr = progress_expr self.encoding = encoding self.wasForcefullyStopped = False + self.shell_execution = shell def was_success(self): self._process.communicate() @@ -46,16 +47,15 @@ class ProcessController(object): self._process = subprocess.Popen( command.encode(sys.getfilesystemencoding()), bufsize=1, stdout=subprocess.PIPE, stdin=subprocess.PIPE, - stderr=subprocess.STDOUT, shell=True, env=env) + stderr=subprocess.STDOUT, shell=self.shell_execution, env=env) except: self._process = subprocess.Popen( command, bufsize=1, stdout=subprocess.PIPE, stdin=subprocess.PIPE, - stderr=subprocess.STDOUT, shell=True, env=env) + stderr = subprocess.STDOUT, shell = self.shell_execution, env=env) t = Thread(target=self._forward_stdout, args=(self._process,)) t.start() - def _forward_stdout(self, process): ''' diff --git a/gooey/python_bindings/config_generator.py b/gooey/python_bindings/config_generator.py index a19a587..d3aa65a 100644 --- a/gooey/python_bindings/config_generator.py +++ b/gooey/python_bindings/config_generator.py @@ -48,6 +48,7 @@ def create_from_parser(parser, source_path, **kwargs): 'poll_external_updates':kwargs.get('poll_external_updates', False), 'return_to_config': kwargs.get('return_to_config', False), 'show_restart_button': kwargs.get('show_restart_button', True), + 'requires_shell': kwargs.get('requires_shell', True), # Legacy/Backward compatibility interop 'use_legacy_titles': kwargs.get('use_legacy_titles', True),