From e022bc6735afe7a73412da3b556e18f53c15188b Mon Sep 17 00:00:00 2001 From: Anthony Sottile Date: Wed, 4 Jan 2017 11:27:40 -0800 Subject: [PATCH] Only --pull on initial docker build --- pre_commit/languages/docker.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/pre_commit/languages/docker.py b/pre_commit/languages/docker.py index b2fed46d..d335b351 100644 --- a/pre_commit/languages/docker.py +++ b/pre_commit/languages/docker.py @@ -39,13 +39,16 @@ def assert_docker_available(): ) -def build_docker_image(repo_cmd_runner): +def build_docker_image(repo_cmd_runner, **kwargs): + pull = kwargs.pop('pull') + assert not kwargs, kwargs cmd = ( - 'docker', 'build', '--pull', + 'docker', 'build', '.', '--tag', docker_tag(repo_cmd_runner), '--label', PRE_COMMIT_LABEL, - '.' ) + if pull: + cmd += ('--pull',) helpers.run_setup_cmd(repo_cmd_runner, cmd) @@ -62,21 +65,22 @@ def install_environment( ) assert_docker_available() - directory = helpers.environment_dir(ENVIRONMENT_DIR, 'default') - os.mkdir(repo_cmd_runner.path(directory)) + directory = repo_cmd_runner.path(helpers.environment_dir( + ENVIRONMENT_DIR, 'default', + )) # Docker doesn't really have relevant disk environment, but pre-commit # still needs to cleanup it's state files on failure - env_dir = repo_cmd_runner.path(directory) - with clean_path_on_failure(env_dir): - build_docker_image(repo_cmd_runner) + with clean_path_on_failure(directory): + build_docker_image(repo_cmd_runner, pull=True) + os.mkdir(directory) def run_hook(repo_cmd_runner, hook, file_args): assert_docker_available() # Rebuild the docker image in case it has gone missing, as many people do # automated cleanup of docker images. - build_docker_image(repo_cmd_runner) + build_docker_image(repo_cmd_runner, pull=False) cmd = ( 'docker', 'run', '--rm',