diff --git a/pre_commit/languages/docker.py b/pre_commit/languages/docker.py index ea415c94..cfd38ddb 100644 --- a/pre_commit/languages/docker.py +++ b/pre_commit/languages/docker.py @@ -3,7 +3,6 @@ from __future__ import unicode_literals import hashlib import os -import shlex from pre_commit import five from pre_commit.languages import helpers @@ -83,8 +82,8 @@ def run_hook(repo_cmd_runner, hook, file_args): # automated cleanup of docker images. build_docker_image(repo_cmd_runner, pull=False) - entry_parts = shlex.split(hook['entry']) - entry_executable, entry_args = entry_parts[0], entry_parts[1:] + hook_cmd = helpers.to_cmd(hook) + entry_executable, cmd_rest = hook_cmd[0], hook_cmd[1:] cmd = ( 'docker', 'run', @@ -94,6 +93,6 @@ def run_hook(repo_cmd_runner, hook, file_args): '--workdir', '/src', '--entrypoint', entry_executable, docker_tag(repo_cmd_runner) - ) + ) + cmd_rest - return xargs(cmd + tuple(entry_args) + tuple(hook['args']), file_args) + return xargs(cmd, file_args) diff --git a/pre_commit/languages/helpers.py b/pre_commit/languages/helpers.py index f0c4240a..a035c470 100644 --- a/pre_commit/languages/helpers.py +++ b/pre_commit/languages/helpers.py @@ -1,5 +1,7 @@ from __future__ import unicode_literals +import shlex + from pre_commit.util import cmd_output @@ -12,3 +14,7 @@ def environment_dir(ENVIRONMENT_DIR, language_version): return None else: return '{}-{}'.format(ENVIRONMENT_DIR, language_version) + + +def to_cmd(hook): + return tuple(shlex.split(hook['entry'])) + tuple(hook['args']) diff --git a/pre_commit/languages/node.py b/pre_commit/languages/node.py index cf104bd8..a5919824 100644 --- a/pre_commit/languages/node.py +++ b/pre_commit/languages/node.py @@ -64,4 +64,4 @@ def install_environment( def run_hook(repo_cmd_runner, hook, file_args): with in_env(repo_cmd_runner, hook['language_version']): - return xargs((hook['entry'],) + tuple(hook['args']), file_args) + return xargs(helpers.to_cmd(hook), file_args) diff --git a/pre_commit/languages/python.py b/pre_commit/languages/python.py index d785bbc9..11be01d0 100644 --- a/pre_commit/languages/python.py +++ b/pre_commit/languages/python.py @@ -83,4 +83,4 @@ def install_environment( def run_hook(repo_cmd_runner, hook, file_args): with in_env(repo_cmd_runner, hook['language_version']): - return xargs((hook['entry'],) + tuple(hook['args']), file_args) + return xargs(helpers.to_cmd(hook), file_args) diff --git a/pre_commit/languages/ruby.py b/pre_commit/languages/ruby.py index d79b6da5..2e01012a 100644 --- a/pre_commit/languages/ruby.py +++ b/pre_commit/languages/ruby.py @@ -128,4 +128,4 @@ def install_environment( def run_hook(repo_cmd_runner, hook, file_args): with in_env(repo_cmd_runner, hook['language_version']): - return xargs((hook['entry'],) + tuple(hook['args']), file_args) + return xargs(helpers.to_cmd(hook), file_args) diff --git a/pre_commit/languages/script.py b/pre_commit/languages/script.py index 5c652846..762ae763 100644 --- a/pre_commit/languages/script.py +++ b/pre_commit/languages/script.py @@ -1,5 +1,6 @@ from __future__ import unicode_literals +from pre_commit.languages import helpers from pre_commit.xargs import xargs @@ -16,7 +17,6 @@ def install_environment( def run_hook(repo_cmd_runner, hook, file_args): - return xargs( - (repo_cmd_runner.prefix_dir + hook['entry'],) + tuple(hook['args']), - file_args, - ) + cmd = helpers.to_cmd(hook) + cmd = (repo_cmd_runner.prefix_dir + cmd[0],) + cmd[1:] + return xargs(cmd, file_args) diff --git a/pre_commit/languages/system.py b/pre_commit/languages/system.py index 8be45855..c9e1c5dc 100644 --- a/pre_commit/languages/system.py +++ b/pre_commit/languages/system.py @@ -1,7 +1,6 @@ from __future__ import unicode_literals -import shlex - +from pre_commit.languages import helpers from pre_commit.xargs import xargs @@ -18,6 +17,4 @@ def install_environment( def run_hook(repo_cmd_runner, hook, file_args): - return xargs( - tuple(shlex.split(hook['entry'])) + tuple(hook['args']), file_args, - ) + return xargs(helpers.to_cmd(hook), file_args)