aboutsummaryrefslogtreecommitdiff
path: root/lib/python/qmk/commands.py
diff options
context:
space:
mode:
authorZach White <skullydazed@gmail.com>2021-05-19 15:24:46 -0700
committerGitHub <noreply@github.com>2021-05-19 15:24:46 -0700
commitdb1eacdaacb9c8f6889f46bc1c6af155b81ad72a (patch)
treecd32a69a04c7ff93a11941d82aef3ce31c2b7523 /lib/python/qmk/commands.py
parenta9aec546c873fa5a2cb1d9a10878aca71818b609 (diff)
downloadqmk_firmware-db1eacdaacb9c8f6889f46bc1c6af155b81ad72a.tar.gz
qmk_firmware-db1eacdaacb9c8f6889f46bc1c6af155b81ad72a.zip
Align our subprocess usage with current best practices. (#12940)
* Align our subprocess usage with current best practices. * remove unused import * Apply suggestions from code review Co-authored-by: Ryan <fauxpark@gmail.com> * fix the cpp invocation for older python * allow for unprompted installation * make sure qmk new-keyboard works on windows Co-authored-by: Ryan <fauxpark@gmail.com>
Diffstat (limited to 'lib/python/qmk/commands.py')
-rw-r--r--lib/python/qmk/commands.py23
1 files changed, 2 insertions, 21 deletions
diff --git a/lib/python/qmk/commands.py b/lib/python/qmk/commands.py
index 8c3f95ea2..ee049e8af 100644
--- a/lib/python/qmk/commands.py
+++ b/lib/python/qmk/commands.py
@@ -2,11 +2,9 @@
2""" 2"""
3import json 3import json
4import os 4import os
5import platform
6import subprocess
7import shlex
8import shutil 5import shutil
9from pathlib import Path 6from pathlib import Path
7from subprocess import DEVNULL
10from time import strftime 8from time import strftime
11 9
12from milc import cli 10from milc import cli
@@ -94,7 +92,7 @@ def get_git_version(repo_dir='.', check_dir='.'):
94 git_describe_cmd = ['git', 'describe', '--abbrev=6', '--dirty', '--always', '--tags'] 92 git_describe_cmd = ['git', 'describe', '--abbrev=6', '--dirty', '--always', '--tags']
95 93
96 if Path(check_dir).exists(): 94 if Path(check_dir).exists():
97 git_describe = cli.run(git_describe_cmd, cwd=repo_dir) 95 git_describe = cli.run(git_describe_cmd, stdin=DEVNULL, cwd=repo_dir)
98 96
99 if git_describe.returncode == 0: 97 if git_describe.returncode == 0:
100 return git_describe.stdout.strip() 98 return git_describe.stdout.strip()
@@ -224,20 +222,3 @@ def parse_configurator_json(configurator_file):
224 user_keymap['layout'] = aliases[orig_keyboard]['layouts'][user_keymap['layout']] 222 user_keymap['layout'] = aliases[orig_keyboard]['layouts'][user_keymap['layout']]
225 223
226 return user_keymap 224 return user_keymap
227
228
229def run(command, *args, **kwargs):
230 """Run a command with subprocess.run
231 """
232 platform_id = platform.platform().lower()
233
234 if isinstance(command, str):
235 raise TypeError('`command` must be a non-text sequence such as list or tuple.')
236
237 if 'windows' in platform_id:
238 safecmd = map(str, command)
239 safecmd = map(shlex.quote, safecmd)
240 safecmd = ' '.join(safecmd)
241 command = [os.environ.get('SHELL', '/usr/bin/bash'), '-c', safecmd]
242
243 return subprocess.run(command, *args, **kwargs)