Browse Source

Make shell option in Popen configurable

debug-shell
chriskiehl 6 years ago
parent
commit
212bda9232
3 changed files with 9 additions and 4 deletions
  1. 3
      gooey/gui/containers/application.py
  2. 7
      gooey/gui/processor.py
  3. 3
      gooey/python_bindings/config_generator.py

3
gooey/gui/containers/application.py

@ -46,7 +46,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)

7
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,12 +47,12 @@ 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)
Pool(1).apply_async(self._forward_stdout, (self._process,))
def _forward_stdout(self, process):

3
gooey/python_bindings/config_generator.py

@ -48,6 +48,9 @@ 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),
# debug
'requires_shell': kwargs.get('requires_shell', True),
# Legacy/Backward compatibility interop
'use_legacy_titles': kwargs.get('use_legacy_titles', True),
'num_required_cols': kwargs.get('required_cols', 1),

Loading…
Cancel
Save