From 14cebbb25f4c5de88bd1da075581a5ad298ecc1f Mon Sep 17 00:00:00 2001 From: Ben Asher Date: Fri, 13 Jan 2017 13:05:44 -0800 Subject: [PATCH] PR feedback fixes --- pre_commit/languages/swift.py | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/pre_commit/languages/swift.py b/pre_commit/languages/swift.py index 810651b7..6c4a436e 100644 --- a/pre_commit/languages/swift.py +++ b/pre_commit/languages/swift.py @@ -1,7 +1,10 @@ from __future__ import unicode_literals +import contextlib import os +from pre_commit.envcontext import envcontext +from pre_commit.envcontext import Var from pre_commit.languages import helpers from pre_commit.util import clean_path_on_failure from pre_commit.xargs import xargs @@ -11,11 +14,34 @@ BUILD_DIR = '.build' BUILD_CONFIG = 'release' +def get_env_patch(venv): + bin_path = os.path.join(venv, BUILD_DIR, BUILD_CONFIG) + patches = ( + ('PATH', ( + bin_path, os.pathsep, Var('PATH'), + )), + ) + return patches + + +@contextlib.contextmanager +def in_env(repo_cmd_runner): + envdir = os.path.join( + repo_cmd_runner.prefix_dir, + helpers.environment_dir(ENVIRONMENT_DIR, 'default'), + ) + with envcontext(get_env_patch(envdir)): + yield + + def install_environment( repo_cmd_runner, version='default', additional_dependencies=(), ): + assert version == 'default', ( + 'Pre-commit does not support language_version for docker ' + ) directory = repo_cmd_runner.path(helpers.environment_dir( ENVIRONMENT_DIR, 'default', )) @@ -32,9 +58,5 @@ def install_environment( def run_hook(repo_cmd_runner, hook, file_args): - directory = repo_cmd_runner.path(helpers.environment_dir( - ENVIRONMENT_DIR, 'default', - )) - cmd = helpers.to_cmd(hook) - full_binary_path = os.path.join(directory, BUILD_DIR, BUILD_CONFIG, cmd[0]) - return xargs((full_binary_path,) + cmd[1:], file_args) + with in_env(repo_cmd_runner): + return xargs(helpers.to_cmd(hook), file_args)