Skip to content

Commit a37bd2f

Browse files
committed
Merge pull request #28 from mogproject/develop
Refactored command module
2 parents 864661c + fcb37c8 commit a37bd2f

File tree

2 files changed

+15
-24
lines changed

2 files changed

+15
-24
lines changed

src/mog_commons/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '0.2.0'
1+
__version__ = '0.2.1'

src/mog_commons/command.py

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212

1313
# workaround for http://bugs.python.org/issue8513
14-
SHOULD_NOT_USE_SHELL_MODE = sys.version_info[:2] == (3, 2) and not sys.platform == 'win32'
14+
SHOULD_NOT_USE_BYTES = sys.version_info[:2] == (3, 2)
1515

1616
# workaround for Windows+Python3 environment
1717
SHOULD_NOT_ENCODE_ARGS = six.PY3 and sys.platform == 'win32'
@@ -21,28 +21,20 @@
2121
# Process operations
2222
#
2323
def __convert_args(args, shell, cmd_encoding):
24-
workaround = shell and SHOULD_NOT_USE_SHELL_MODE
25-
2624
if isinstance(args, six.string_types):
2725
# input as string
2826
if not SHOULD_NOT_ENCODE_ARGS:
2927
args = to_bytes(args, cmd_encoding)
30-
if workaround:
31-
return ['/bin/sh', '-c', args], False
32-
else:
33-
return args, shell
34-
35-
# input as list
36-
if shell and sys.platform != 'win32':
37-
args = [to_bytes(subprocess.list2cmdline(args), cmd_encoding)]
38-
if workaround:
39-
return ['/bin/sh', '-c'] + args, False
28+
if SHOULD_NOT_USE_BYTES:
29+
args = [args]
4030
else:
41-
if not SHOULD_NOT_ENCODE_ARGS:
42-
if six.PY2 or sys.platform != 'win32':
31+
# input as list
32+
if shell and sys.platform != 'win32':
33+
args = [to_bytes(subprocess.list2cmdline(args), cmd_encoding)]
34+
else:
35+
if not SHOULD_NOT_ENCODE_ARGS:
4336
args = [to_bytes(a, cmd_encoding) for a in args]
44-
45-
return args, shell
37+
return args
4638

4739

4840
def __convert_env(env, encoding):
@@ -69,9 +61,9 @@ def execute_command(args, shell=False, cwd=None, env=None, stdin=None, stdout=No
6961
:param cmd_encoding: command line encoding: string
7062
:return: return code
7163
"""
72-
args, shell = __convert_args(args, shell, cmd_encoding)
73-
return subprocess.call(args=args, shell=shell, cwd=cwd, env=__convert_env(env, cmd_encoding),
74-
stdin=stdin, stdout=stdout, stderr=stderr)
64+
return subprocess.call(
65+
args=__convert_args(args, shell, cmd_encoding), shell=shell, cwd=cwd, env=__convert_env(env, cmd_encoding),
66+
stdin=stdin, stdout=stdout, stderr=stderr)
7567

7668

7769
def capture_command(args, shell=False, cwd=None, env=None, stdin=None, cmd_encoding='utf-8'):
@@ -85,9 +77,8 @@ def capture_command(args, shell=False, cwd=None, env=None, stdin=None, cmd_encod
8577
:param cmd_encoding: command line encoding: string
8678
:return: tuple of return code, stdout data and stderr data
8779
"""
88-
args, shell = __convert_args(args, shell, cmd_encoding)
8980
p = subprocess.Popen(
90-
args, shell=shell, cwd=cwd, env=__convert_env(env, cmd_encoding),
81+
__convert_args(args, shell, cmd_encoding), shell=shell, cwd=cwd, env=__convert_env(env, cmd_encoding),
9182
stdin=stdin, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
9283
stdout_data, stderr_data = p.communicate()
9384
return p.returncode, stdout_data, stderr_data
@@ -99,7 +90,7 @@ def execute_command_with_pid(args, pid_file=None, shell=False, cwd=None, env=Non
9990
return execute_command(args, shell, cwd, env, stdin, stdout, stderr, cmd_encoding)
10091
else:
10192
try:
102-
args, shell = __convert_args(args, shell, cmd_encoding)
93+
args = __convert_args(args, shell, cmd_encoding)
10394
p = subprocess.Popen(
10495
args, shell=shell, cwd=cwd, env=__convert_env(env, cmd_encoding),
10596
stdin=stdin, stdout=stdout, stderr=stderr)

0 commit comments

Comments
 (0)