Implement default_language_version

This commit is contained in:
Anthony Sottile 2019-01-05 13:01:42 -08:00
parent 579b05e424
commit d3b5a41830
23 changed files with 150 additions and 103 deletions

View file

@ -35,8 +35,7 @@ from pre_commit.languages import system
#
# Args:
# prefix - `Prefix` bound to the repository.
# version - A version specified in the hook configuration or
# 'default'.
# version - A version specified in the hook configuration or 'default'.
# """
#
# def run_hook(hook, file_args):

View file

@ -4,6 +4,7 @@ from __future__ import unicode_literals
import hashlib
import os
import pre_commit.constants as C
from pre_commit import five
from pre_commit.languages import helpers
from pre_commit.util import CalledProcessError
@ -62,7 +63,7 @@ def install_environment(
assert_docker_available()
directory = prefix.path(
helpers.environment_dir(ENVIRONMENT_DIR, 'default'),
helpers.environment_dir(ENVIRONMENT_DIR, C.DEFAULT),
)
# Docker doesn't really have relevant disk environment, but pre-commit

View file

@ -4,6 +4,7 @@ import contextlib
import os.path
import sys
import pre_commit.constants as C
from pre_commit import git
from pre_commit.envcontext import envcontext
from pre_commit.envcontext import Var
@ -27,7 +28,7 @@ def get_env_patch(venv):
@contextlib.contextmanager
def in_env(prefix):
envdir = prefix.path(
helpers.environment_dir(ENVIRONMENT_DIR, 'default'),
helpers.environment_dir(ENVIRONMENT_DIR, C.DEFAULT),
)
with envcontext(get_env_patch(envdir)):
yield
@ -52,7 +53,7 @@ def guess_go_dir(remote_url):
def install_environment(prefix, version, additional_dependencies):
helpers.assert_version_default('golang', version)
directory = prefix.path(
helpers.environment_dir(ENVIRONMENT_DIR, 'default'),
helpers.environment_dir(ENVIRONMENT_DIR, C.DEFAULT),
)
with clean_path_on_failure(directory):

View file

@ -7,10 +7,10 @@ import shlex
import six
import pre_commit.constants as C
from pre_commit.util import cmd_output
from pre_commit.xargs import xargs
FIXED_RANDOM_SEED = 1542676186
@ -30,7 +30,7 @@ def to_cmd(hook):
def assert_version_default(binary, version):
if version != 'default':
if version != C.DEFAULT:
raise AssertionError(
'For now, pre-commit requires system-installed {}'.format(binary),
)
@ -45,7 +45,7 @@ def assert_no_additional_deps(lang, additional_deps):
def basic_get_default_version():
return 'default'
return C.DEFAULT
def basic_healthy(prefix, language_version):

View file

@ -4,6 +4,7 @@ import contextlib
import os
import sys
import pre_commit.constants as C
from pre_commit.envcontext import envcontext
from pre_commit.envcontext import Var
from pre_commit.languages import helpers
@ -57,7 +58,7 @@ def install_environment(prefix, version, additional_dependencies):
cmd = [
sys.executable, '-mnodeenv', '--prebuilt', '--clean-src', envdir,
]
if version != 'default':
if version != C.DEFAULT:
cmd.extend(['-n', version])
cmd_output(*cmd)

View file

@ -4,6 +4,7 @@ import contextlib
import os
import sys
import pre_commit.constants as C
from pre_commit.envcontext import envcontext
from pre_commit.envcontext import UNSET
from pre_commit.envcontext import Var
@ -76,7 +77,7 @@ def _get_default_version(): # pragma: no cover (platform dependent)
return exe
# We tried!
return 'default'
return C.DEFAULT
def get_default_version():
@ -134,7 +135,7 @@ def py_interface(_dir, _make_venv):
env_dir = prefix.path(directory)
with clean_path_on_failure(env_dir):
if version != 'default':
if version != C.DEFAULT:
python = norm_version(version)
else:
python = os.path.realpath(sys.executable)

View file

@ -6,6 +6,7 @@ import os.path
import shutil
import tarfile
import pre_commit.constants as C
from pre_commit.envcontext import envcontext
from pre_commit.envcontext import Var
from pre_commit.languages import helpers
@ -32,7 +33,7 @@ def get_env_patch(venv, language_version): # pragma: windows no cover
),
),
)
if language_version != 'default':
if language_version != C.DEFAULT:
patches += (('RBENV_VERSION', language_version),)
return patches
@ -52,14 +53,14 @@ def _extract_resource(filename, dest):
tf.extractall(dest)
def _install_rbenv(prefix, version='default'): # pragma: windows no cover
def _install_rbenv(prefix, version=C.DEFAULT): # pragma: windows no cover
directory = helpers.environment_dir(ENVIRONMENT_DIR, version)
_extract_resource('rbenv.tar.gz', prefix.path('.'))
shutil.move(prefix.path('rbenv'), prefix.path(directory))
# Only install ruby-build if the version is specified
if version != 'default':
if version != C.DEFAULT:
plugins_dir = prefix.path(directory, 'plugins')
_extract_resource('ruby-download.tar.gz', plugins_dir)
_extract_resource('ruby-build.tar.gz', plugins_dir)
@ -84,7 +85,7 @@ def _install_rbenv(prefix, version='default'): # pragma: windows no cover
)
# If we aren't using the system ruby, add a version here
if version != 'default':
if version != C.DEFAULT:
activate_file.write('export RBENV_VERSION="{}"\n'.format(version))
@ -109,7 +110,7 @@ def install_environment(
# Need to call this before installing so rbenv's directories are
# set up
helpers.run_setup_cmd(prefix, ('rbenv', 'init', '-'))
if version != 'default':
if version != C.DEFAULT:
_install_ruby(prefix, version)
# Need to call this after installing to set up the shims
helpers.run_setup_cmd(prefix, ('rbenv', 'rehash'))

View file

@ -5,6 +5,7 @@ import os.path
import toml
import pre_commit.constants as C
from pre_commit.envcontext import envcontext
from pre_commit.envcontext import Var
from pre_commit.languages import helpers
@ -29,7 +30,7 @@ def get_env_patch(target_dir):
@contextlib.contextmanager
def in_env(prefix):
target_dir = prefix.path(
helpers.environment_dir(ENVIRONMENT_DIR, 'default'),
helpers.environment_dir(ENVIRONMENT_DIR, C.DEFAULT),
)
with envcontext(get_env_patch(target_dir)):
yield
@ -50,7 +51,7 @@ def _add_dependencies(cargo_toml_path, additional_dependencies):
def install_environment(prefix, version, additional_dependencies):
helpers.assert_version_default('rust', version)
directory = prefix.path(
helpers.environment_dir(ENVIRONMENT_DIR, 'default'),
helpers.environment_dir(ENVIRONMENT_DIR, C.DEFAULT),
)
# There are two cases where we might want to specify more dependencies:

View file

@ -3,6 +3,7 @@ from __future__ import unicode_literals
import contextlib
import os
import pre_commit.constants as C
from pre_commit.envcontext import envcontext
from pre_commit.envcontext import Var
from pre_commit.languages import helpers
@ -24,7 +25,7 @@ def get_env_patch(venv): # pragma: windows no cover
@contextlib.contextmanager
def in_env(prefix): # pragma: windows no cover
envdir = prefix.path(
helpers.environment_dir(ENVIRONMENT_DIR, 'default'),
helpers.environment_dir(ENVIRONMENT_DIR, C.DEFAULT),
)
with envcontext(get_env_patch(envdir)):
yield
@ -36,7 +37,7 @@ def install_environment(
helpers.assert_version_default('swift', version)
helpers.assert_no_additional_deps('swift', additional_dependencies)
directory = prefix.path(
helpers.environment_dir(ENVIRONMENT_DIR, 'default'),
helpers.environment_dir(ENVIRONMENT_DIR, C.DEFAULT),
)
# Build the swift package