From fefe2731a99707e7e0530aa5eba8d164ee17dbf8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciro=20Santilli=20=E5=85=AD=E5=9B=9B=E4=BA=8B=E4=BB=B6=20?= =?UTF-8?q?=E6=B3=95=E8=BD=AE=E5=8A=9F?= Date: Thu, 7 May 2020 04:00:03 +0000 Subject: [PATCH] shell_helpers: force_oneline actually forces oneline cd and env vars --- shell_helpers.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/shell_helpers.py b/shell_helpers.py index 056c46a..8cf8157 100644 --- a/shell_helpers.py +++ b/shell_helpers.py @@ -140,12 +140,14 @@ class ShellHelpers: out = [] if extra_env is None: extra_env = {} + preffix_arr = [] if cwd is not None: - out.append('cd {} &&'.format(shlex.quote(cwd))) + preffix_arr.append('cd {} &&'.format(shlex.quote(cwd))) + extra_env2 = extra_env.copy() if extra_paths is not None: - out.append('PATH="{}:${{PATH}}"'.format(':'.join(extra_paths))) - for key in extra_env: - out.append('{}={}'.format(shlex.quote(key), shlex.quote(extra_env[key]))) + extra_env2['PATH'] = '{}:"${{PATH}}"'.format(shlex.quote(':'.join(extra_paths))) + for key in extra_env2: + preffix_arr.append('{}={}'.format(shlex.quote(key), shlex.quote(extra_env2[key]))) cmd_quote = [] newline_count = 0 for arg in cmd: @@ -164,6 +166,10 @@ class ShellHelpers: ) if not x ] + if self.force_oneline(force_oneline): + cmd_quote = [' '.join(preffix_arr + cmd_quote)] + else: + cmd_quote = preffix_arr + cmd_quote out.extend(cmd_quote) if stdin_path is not None: out.append('< {}'.format(shlex.quote(stdin_path)))