summaryrefslogtreecommitdiff
path: root/tools/util.py
diff options
context:
space:
mode:
authorBert Belder <bertbelder@gmail.com>2019-09-15 16:47:37 +0200
committerBert Belder <bertbelder@gmail.com>2019-09-15 17:47:51 +0200
commit456b75cbf9e6934a25fc77cce2afa3d33466b809 (patch)
tree58154788763ea4afe765c4aaabde941ea07c89cf /tools/util.py
parente7d1da367150b03456b9e0f04b6ecd2ec13d51e0 (diff)
tools: add 'shell' parameter to 'run()' (#2950)
Diffstat (limited to 'tools/util.py')
-rw-r--r--tools/util.py14
1 files changed, 8 insertions, 6 deletions
diff --git a/tools/util.py b/tools/util.py
index 5711f737a..ce4c83573 100644
--- a/tools/util.py
+++ b/tools/util.py
@@ -49,14 +49,16 @@ def add_env_path(add, env, key="PATH", prepend=False):
env[key] = os.pathsep.join(dirs_left)
-def run(args, quiet=False, cwd=None, env=None, merge_env=None):
- if merge_env is None:
- merge_env = {}
+def run(args, quiet=False, cwd=None, env=None, merge_env=None, shell=None):
args[0] = os.path.normpath(args[0])
- if not quiet:
- print " ".join(args)
env = make_env(env=env, merge_env=merge_env)
- shell = os.name == "nt" # Run through shell to make .bat/.cmd files work.
+ if shell is None:
+ # Use the default value for 'shell' parameter.
+ # - Posix: do not use shell.
+ # - Windows: use shell; this makes .bat/.cmd files work.
+ shell = os.name == "nt"
+ if not quiet:
+ print " ".join([shell_quote(arg) for arg in args])
rc = subprocess.call(args, cwd=cwd, env=env, shell=shell)
if rc != 0:
sys.exit(rc)