mirror of
https://github.com/pre-commit/pre-commit.git
synced 2026-04-14 17:41:45 +04:00
move languages.all and languages.helpers out of languages
This commit is contained in:
parent
5bc56889e9
commit
d3883ce7f7
30 changed files with 274 additions and 282 deletions
48
pre_commit/all_languages.py
Normal file
48
pre_commit/all_languages.py
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from pre_commit.lang_base import Language
|
||||||
|
from pre_commit.languages import conda
|
||||||
|
from pre_commit.languages import coursier
|
||||||
|
from pre_commit.languages import dart
|
||||||
|
from pre_commit.languages import docker
|
||||||
|
from pre_commit.languages import docker_image
|
||||||
|
from pre_commit.languages import dotnet
|
||||||
|
from pre_commit.languages import fail
|
||||||
|
from pre_commit.languages import golang
|
||||||
|
from pre_commit.languages import lua
|
||||||
|
from pre_commit.languages import node
|
||||||
|
from pre_commit.languages import perl
|
||||||
|
from pre_commit.languages import pygrep
|
||||||
|
from pre_commit.languages import python
|
||||||
|
from pre_commit.languages import r
|
||||||
|
from pre_commit.languages import ruby
|
||||||
|
from pre_commit.languages import rust
|
||||||
|
from pre_commit.languages import script
|
||||||
|
from pre_commit.languages import swift
|
||||||
|
from pre_commit.languages import system
|
||||||
|
|
||||||
|
|
||||||
|
languages: dict[str, Language] = {
|
||||||
|
'conda': conda,
|
||||||
|
'coursier': coursier,
|
||||||
|
'dart': dart,
|
||||||
|
'docker': docker,
|
||||||
|
'docker_image': docker_image,
|
||||||
|
'dotnet': dotnet,
|
||||||
|
'fail': fail,
|
||||||
|
'golang': golang,
|
||||||
|
'lua': lua,
|
||||||
|
'node': node,
|
||||||
|
'perl': perl,
|
||||||
|
'pygrep': pygrep,
|
||||||
|
'python': python,
|
||||||
|
'r': r,
|
||||||
|
'ruby': ruby,
|
||||||
|
'rust': rust,
|
||||||
|
'script': script,
|
||||||
|
'swift': swift,
|
||||||
|
'system': system,
|
||||||
|
# TODO: fully deprecate `python_venv`
|
||||||
|
'python_venv': python,
|
||||||
|
}
|
||||||
|
language_names = sorted(languages)
|
||||||
|
|
@ -12,8 +12,8 @@ import cfgv
|
||||||
from identify.identify import ALL_TAGS
|
from identify.identify import ALL_TAGS
|
||||||
|
|
||||||
import pre_commit.constants as C
|
import pre_commit.constants as C
|
||||||
|
from pre_commit.all_languages import language_names
|
||||||
from pre_commit.errors import FatalError
|
from pre_commit.errors import FatalError
|
||||||
from pre_commit.languages.all import all_languages
|
|
||||||
from pre_commit.yaml import yaml_load
|
from pre_commit.yaml import yaml_load
|
||||||
|
|
||||||
logger = logging.getLogger('pre_commit')
|
logger = logging.getLogger('pre_commit')
|
||||||
|
|
@ -49,7 +49,7 @@ MANIFEST_HOOK_DICT = cfgv.Map(
|
||||||
cfgv.Required('id', cfgv.check_string),
|
cfgv.Required('id', cfgv.check_string),
|
||||||
cfgv.Required('name', cfgv.check_string),
|
cfgv.Required('name', cfgv.check_string),
|
||||||
cfgv.Required('entry', cfgv.check_string),
|
cfgv.Required('entry', cfgv.check_string),
|
||||||
cfgv.Required('language', cfgv.check_one_of(all_languages)),
|
cfgv.Required('language', cfgv.check_one_of(language_names)),
|
||||||
cfgv.Optional('alias', cfgv.check_string, ''),
|
cfgv.Optional('alias', cfgv.check_string, ''),
|
||||||
|
|
||||||
cfgv.Optional('files', check_string_regex, ''),
|
cfgv.Optional('files', check_string_regex, ''),
|
||||||
|
|
@ -281,8 +281,8 @@ CONFIG_REPO_DICT = cfgv.Map(
|
||||||
)
|
)
|
||||||
DEFAULT_LANGUAGE_VERSION = cfgv.Map(
|
DEFAULT_LANGUAGE_VERSION = cfgv.Map(
|
||||||
'DefaultLanguageVersion', None,
|
'DefaultLanguageVersion', None,
|
||||||
cfgv.NoAdditionalKeys(all_languages),
|
cfgv.NoAdditionalKeys(language_names),
|
||||||
*(cfgv.Optional(x, cfgv.check_string, C.DEFAULT) for x in all_languages),
|
*(cfgv.Optional(x, cfgv.check_string, C.DEFAULT) for x in language_names),
|
||||||
)
|
)
|
||||||
CONFIG_SCHEMA = cfgv.Map(
|
CONFIG_SCHEMA = cfgv.Map(
|
||||||
'Config', None,
|
'Config', None,
|
||||||
|
|
|
||||||
|
|
@ -19,9 +19,9 @@ from identify.identify import tags_from_path
|
||||||
from pre_commit import color
|
from pre_commit import color
|
||||||
from pre_commit import git
|
from pre_commit import git
|
||||||
from pre_commit import output
|
from pre_commit import output
|
||||||
|
from pre_commit.all_languages import languages
|
||||||
from pre_commit.clientlib import load_config
|
from pre_commit.clientlib import load_config
|
||||||
from pre_commit.hook import Hook
|
from pre_commit.hook import Hook
|
||||||
from pre_commit.languages.all import languages
|
|
||||||
from pre_commit.repository import all_hooks
|
from pre_commit.repository import all_hooks
|
||||||
from pre_commit.repository import install_hook_envs
|
from pre_commit.repository import install_hook_envs
|
||||||
from pre_commit.staged_files_only import staged_files_only
|
from pre_commit.staged_files_only import staged_files_only
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,10 @@ import random
|
||||||
import re
|
import re
|
||||||
import shlex
|
import shlex
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
from typing import ContextManager
|
||||||
from typing import Generator
|
from typing import Generator
|
||||||
from typing import NoReturn
|
from typing import NoReturn
|
||||||
|
from typing import Protocol
|
||||||
from typing import Sequence
|
from typing import Sequence
|
||||||
|
|
||||||
import pre_commit.constants as C
|
import pre_commit.constants as C
|
||||||
|
|
@ -22,6 +24,47 @@ FIXED_RANDOM_SEED = 1542676187
|
||||||
SHIMS_RE = re.compile(r'[/\\]shims[/\\]')
|
SHIMS_RE = re.compile(r'[/\\]shims[/\\]')
|
||||||
|
|
||||||
|
|
||||||
|
class Language(Protocol):
|
||||||
|
# Use `None` for no installation / environment
|
||||||
|
@property
|
||||||
|
def ENVIRONMENT_DIR(self) -> str | None: ...
|
||||||
|
# return a value to replace `'default` for `language_version`
|
||||||
|
def get_default_version(self) -> str: ...
|
||||||
|
# return whether the environment is healthy (or should be rebuilt)
|
||||||
|
def health_check(self, prefix: Prefix, version: str) -> str | None: ...
|
||||||
|
|
||||||
|
# install a repository for the given language and language_version
|
||||||
|
def install_environment(
|
||||||
|
self,
|
||||||
|
prefix: Prefix,
|
||||||
|
version: str,
|
||||||
|
additional_dependencies: Sequence[str],
|
||||||
|
) -> None:
|
||||||
|
...
|
||||||
|
|
||||||
|
# modify the environment for hook execution
|
||||||
|
def in_env(
|
||||||
|
self,
|
||||||
|
prefix: Prefix,
|
||||||
|
version: str,
|
||||||
|
) -> ContextManager[None]:
|
||||||
|
...
|
||||||
|
|
||||||
|
# execute a hook and return the exit code and output
|
||||||
|
def run_hook(
|
||||||
|
self,
|
||||||
|
prefix: Prefix,
|
||||||
|
entry: str,
|
||||||
|
args: Sequence[str],
|
||||||
|
file_args: Sequence[str],
|
||||||
|
*,
|
||||||
|
is_local: bool,
|
||||||
|
require_serial: bool,
|
||||||
|
color: bool,
|
||||||
|
) -> tuple[int, bytes]:
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
def exe_exists(exe: str) -> bool:
|
def exe_exists(exe: str) -> bool:
|
||||||
found = parse_shebang.find_executable(exe)
|
found = parse_shebang.find_executable(exe)
|
||||||
if found is None: # exe exists
|
if found is None: # exe exists
|
||||||
|
|
@ -45,7 +88,7 @@ def exe_exists(exe: str) -> bool:
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def run_setup_cmd(prefix: Prefix, cmd: tuple[str, ...], **kwargs: Any) -> None:
|
def setup_cmd(prefix: Prefix, cmd: tuple[str, ...], **kwargs: Any) -> None:
|
||||||
cmd_output_b(*cmd, cwd=prefix.prefix_dir, **kwargs)
|
cmd_output_b(*cmd, cwd=prefix.prefix_dir, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,99 +0,0 @@
|
||||||
from __future__ import annotations
|
|
||||||
|
|
||||||
from typing import ContextManager
|
|
||||||
from typing import Protocol
|
|
||||||
from typing import Sequence
|
|
||||||
|
|
||||||
from pre_commit.languages import conda
|
|
||||||
from pre_commit.languages import coursier
|
|
||||||
from pre_commit.languages import dart
|
|
||||||
from pre_commit.languages import docker
|
|
||||||
from pre_commit.languages import docker_image
|
|
||||||
from pre_commit.languages import dotnet
|
|
||||||
from pre_commit.languages import fail
|
|
||||||
from pre_commit.languages import golang
|
|
||||||
from pre_commit.languages import lua
|
|
||||||
from pre_commit.languages import node
|
|
||||||
from pre_commit.languages import perl
|
|
||||||
from pre_commit.languages import pygrep
|
|
||||||
from pre_commit.languages import python
|
|
||||||
from pre_commit.languages import r
|
|
||||||
from pre_commit.languages import ruby
|
|
||||||
from pre_commit.languages import rust
|
|
||||||
from pre_commit.languages import script
|
|
||||||
from pre_commit.languages import swift
|
|
||||||
from pre_commit.languages import system
|
|
||||||
from pre_commit.prefix import Prefix
|
|
||||||
|
|
||||||
|
|
||||||
class Language(Protocol):
|
|
||||||
# Use `None` for no installation / environment
|
|
||||||
@property
|
|
||||||
def ENVIRONMENT_DIR(self) -> str | None: ...
|
|
||||||
# return a value to replace `'default` for `language_version`
|
|
||||||
def get_default_version(self) -> str: ...
|
|
||||||
|
|
||||||
# return whether the environment is healthy (or should be rebuilt)
|
|
||||||
def health_check(
|
|
||||||
self,
|
|
||||||
prefix: Prefix,
|
|
||||||
language_version: str,
|
|
||||||
) -> str | None:
|
|
||||||
...
|
|
||||||
|
|
||||||
# install a repository for the given language and language_version
|
|
||||||
def install_environment(
|
|
||||||
self,
|
|
||||||
prefix: Prefix,
|
|
||||||
version: str,
|
|
||||||
additional_dependencies: Sequence[str],
|
|
||||||
) -> None:
|
|
||||||
...
|
|
||||||
|
|
||||||
# modify the environment for hook execution
|
|
||||||
def in_env(
|
|
||||||
self,
|
|
||||||
prefix: Prefix,
|
|
||||||
version: str,
|
|
||||||
) -> ContextManager[None]:
|
|
||||||
...
|
|
||||||
|
|
||||||
# execute a hook and return the exit code and output
|
|
||||||
def run_hook(
|
|
||||||
self,
|
|
||||||
prefix: Prefix,
|
|
||||||
entry: str,
|
|
||||||
args: Sequence[str],
|
|
||||||
file_args: Sequence[str],
|
|
||||||
*,
|
|
||||||
is_local: bool,
|
|
||||||
require_serial: bool,
|
|
||||||
color: bool,
|
|
||||||
) -> tuple[int, bytes]:
|
|
||||||
...
|
|
||||||
|
|
||||||
|
|
||||||
languages: dict[str, Language] = {
|
|
||||||
'conda': conda,
|
|
||||||
'coursier': coursier,
|
|
||||||
'dart': dart,
|
|
||||||
'docker': docker,
|
|
||||||
'docker_image': docker_image,
|
|
||||||
'dotnet': dotnet,
|
|
||||||
'fail': fail,
|
|
||||||
'golang': golang,
|
|
||||||
'lua': lua,
|
|
||||||
'node': node,
|
|
||||||
'perl': perl,
|
|
||||||
'pygrep': pygrep,
|
|
||||||
'python': python,
|
|
||||||
'r': r,
|
|
||||||
'ruby': ruby,
|
|
||||||
'rust': rust,
|
|
||||||
'script': script,
|
|
||||||
'swift': swift,
|
|
||||||
'system': system,
|
|
||||||
# TODO: fully deprecate `python_venv`
|
|
||||||
'python_venv': python,
|
|
||||||
}
|
|
||||||
all_languages = sorted(languages)
|
|
||||||
|
|
@ -5,19 +5,19 @@ import os
|
||||||
from typing import Generator
|
from typing import Generator
|
||||||
from typing import Sequence
|
from typing import Sequence
|
||||||
|
|
||||||
|
from pre_commit import lang_base
|
||||||
from pre_commit.envcontext import envcontext
|
from pre_commit.envcontext import envcontext
|
||||||
from pre_commit.envcontext import PatchesT
|
from pre_commit.envcontext import PatchesT
|
||||||
from pre_commit.envcontext import SubstitutionT
|
from pre_commit.envcontext import SubstitutionT
|
||||||
from pre_commit.envcontext import UNSET
|
from pre_commit.envcontext import UNSET
|
||||||
from pre_commit.envcontext import Var
|
from pre_commit.envcontext import Var
|
||||||
from pre_commit.languages import helpers
|
|
||||||
from pre_commit.prefix import Prefix
|
from pre_commit.prefix import Prefix
|
||||||
from pre_commit.util import cmd_output_b
|
from pre_commit.util import cmd_output_b
|
||||||
|
|
||||||
ENVIRONMENT_DIR = 'conda'
|
ENVIRONMENT_DIR = 'conda'
|
||||||
get_default_version = helpers.basic_get_default_version
|
get_default_version = lang_base.basic_get_default_version
|
||||||
health_check = helpers.basic_health_check
|
health_check = lang_base.basic_health_check
|
||||||
run_hook = helpers.basic_run_hook
|
run_hook = lang_base.basic_run_hook
|
||||||
|
|
||||||
|
|
||||||
def get_env_patch(env: str) -> PatchesT:
|
def get_env_patch(env: str) -> PatchesT:
|
||||||
|
|
@ -41,7 +41,7 @@ def get_env_patch(env: str) -> PatchesT:
|
||||||
|
|
||||||
@contextlib.contextmanager
|
@contextlib.contextmanager
|
||||||
def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
|
def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
|
||||||
envdir = helpers.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
||||||
with envcontext(get_env_patch(envdir)):
|
with envcontext(get_env_patch(envdir)):
|
||||||
yield
|
yield
|
||||||
|
|
||||||
|
|
@ -60,11 +60,11 @@ def install_environment(
|
||||||
version: str,
|
version: str,
|
||||||
additional_dependencies: Sequence[str],
|
additional_dependencies: Sequence[str],
|
||||||
) -> None:
|
) -> None:
|
||||||
helpers.assert_version_default('conda', version)
|
lang_base.assert_version_default('conda', version)
|
||||||
|
|
||||||
conda_exe = _conda_exe()
|
conda_exe = _conda_exe()
|
||||||
|
|
||||||
env_dir = helpers.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
env_dir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
||||||
cmd_output_b(
|
cmd_output_b(
|
||||||
conda_exe, 'env', 'create', '-p', env_dir, '--file',
|
conda_exe, 'env', 'create', '-p', env_dir, '--file',
|
||||||
'environment.yml', cwd=prefix.prefix_dir,
|
'environment.yml', cwd=prefix.prefix_dir,
|
||||||
|
|
|
||||||
|
|
@ -5,19 +5,19 @@ import os.path
|
||||||
from typing import Generator
|
from typing import Generator
|
||||||
from typing import Sequence
|
from typing import Sequence
|
||||||
|
|
||||||
|
from pre_commit import lang_base
|
||||||
from pre_commit.envcontext import envcontext
|
from pre_commit.envcontext import envcontext
|
||||||
from pre_commit.envcontext import PatchesT
|
from pre_commit.envcontext import PatchesT
|
||||||
from pre_commit.envcontext import Var
|
from pre_commit.envcontext import Var
|
||||||
from pre_commit.errors import FatalError
|
from pre_commit.errors import FatalError
|
||||||
from pre_commit.languages import helpers
|
|
||||||
from pre_commit.parse_shebang import find_executable
|
from pre_commit.parse_shebang import find_executable
|
||||||
from pre_commit.prefix import Prefix
|
from pre_commit.prefix import Prefix
|
||||||
|
|
||||||
ENVIRONMENT_DIR = 'coursier'
|
ENVIRONMENT_DIR = 'coursier'
|
||||||
|
|
||||||
get_default_version = helpers.basic_get_default_version
|
get_default_version = lang_base.basic_get_default_version
|
||||||
health_check = helpers.basic_health_check
|
health_check = lang_base.basic_health_check
|
||||||
run_hook = helpers.basic_run_hook
|
run_hook = lang_base.basic_run_hook
|
||||||
|
|
||||||
|
|
||||||
def install_environment(
|
def install_environment(
|
||||||
|
|
@ -25,7 +25,7 @@ def install_environment(
|
||||||
version: str,
|
version: str,
|
||||||
additional_dependencies: Sequence[str],
|
additional_dependencies: Sequence[str],
|
||||||
) -> None:
|
) -> None:
|
||||||
helpers.assert_version_default('coursier', version)
|
lang_base.assert_version_default('coursier', version)
|
||||||
|
|
||||||
# Support both possible executable names (either "cs" or "coursier")
|
# Support both possible executable names (either "cs" or "coursier")
|
||||||
cs = find_executable('cs') or find_executable('coursier')
|
cs = find_executable('cs') or find_executable('coursier')
|
||||||
|
|
@ -35,12 +35,12 @@ def install_environment(
|
||||||
'executables in the application search path',
|
'executables in the application search path',
|
||||||
)
|
)
|
||||||
|
|
||||||
envdir = helpers.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
||||||
|
|
||||||
def _install(*opts: str) -> None:
|
def _install(*opts: str) -> None:
|
||||||
assert cs is not None
|
assert cs is not None
|
||||||
helpers.run_setup_cmd(prefix, (cs, 'fetch', *opts))
|
lang_base.setup_cmd(prefix, (cs, 'fetch', *opts))
|
||||||
helpers.run_setup_cmd(prefix, (cs, 'install', '--dir', envdir, *opts))
|
lang_base.setup_cmd(prefix, (cs, 'install', '--dir', envdir, *opts))
|
||||||
|
|
||||||
with in_env(prefix, version):
|
with in_env(prefix, version):
|
||||||
channel = prefix.path('.pre-commit-channel')
|
channel = prefix.path('.pre-commit-channel')
|
||||||
|
|
@ -71,6 +71,6 @@ def get_env_patch(target_dir: str) -> PatchesT:
|
||||||
|
|
||||||
@contextlib.contextmanager
|
@contextlib.contextmanager
|
||||||
def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
|
def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
|
||||||
envdir = helpers.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
||||||
with envcontext(get_env_patch(envdir)):
|
with envcontext(get_env_patch(envdir)):
|
||||||
yield
|
yield
|
||||||
|
|
|
||||||
|
|
@ -7,19 +7,19 @@ import tempfile
|
||||||
from typing import Generator
|
from typing import Generator
|
||||||
from typing import Sequence
|
from typing import Sequence
|
||||||
|
|
||||||
|
from pre_commit import lang_base
|
||||||
from pre_commit.envcontext import envcontext
|
from pre_commit.envcontext import envcontext
|
||||||
from pre_commit.envcontext import PatchesT
|
from pre_commit.envcontext import PatchesT
|
||||||
from pre_commit.envcontext import Var
|
from pre_commit.envcontext import Var
|
||||||
from pre_commit.languages import helpers
|
|
||||||
from pre_commit.prefix import Prefix
|
from pre_commit.prefix import Prefix
|
||||||
from pre_commit.util import win_exe
|
from pre_commit.util import win_exe
|
||||||
from pre_commit.yaml import yaml_load
|
from pre_commit.yaml import yaml_load
|
||||||
|
|
||||||
ENVIRONMENT_DIR = 'dartenv'
|
ENVIRONMENT_DIR = 'dartenv'
|
||||||
|
|
||||||
get_default_version = helpers.basic_get_default_version
|
get_default_version = lang_base.basic_get_default_version
|
||||||
health_check = helpers.basic_health_check
|
health_check = lang_base.basic_health_check
|
||||||
run_hook = helpers.basic_run_hook
|
run_hook = lang_base.basic_run_hook
|
||||||
|
|
||||||
|
|
||||||
def get_env_patch(venv: str) -> PatchesT:
|
def get_env_patch(venv: str) -> PatchesT:
|
||||||
|
|
@ -30,7 +30,7 @@ def get_env_patch(venv: str) -> PatchesT:
|
||||||
|
|
||||||
@contextlib.contextmanager
|
@contextlib.contextmanager
|
||||||
def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
|
def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
|
||||||
envdir = helpers.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
||||||
with envcontext(get_env_patch(envdir)):
|
with envcontext(get_env_patch(envdir)):
|
||||||
yield
|
yield
|
||||||
|
|
||||||
|
|
@ -40,9 +40,9 @@ def install_environment(
|
||||||
version: str,
|
version: str,
|
||||||
additional_dependencies: Sequence[str],
|
additional_dependencies: Sequence[str],
|
||||||
) -> None:
|
) -> None:
|
||||||
helpers.assert_version_default('dart', version)
|
lang_base.assert_version_default('dart', version)
|
||||||
|
|
||||||
envdir = helpers.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
||||||
bin_dir = os.path.join(envdir, 'bin')
|
bin_dir = os.path.join(envdir, 'bin')
|
||||||
|
|
||||||
def _install_dir(prefix_p: Prefix, pub_cache: str) -> None:
|
def _install_dir(prefix_p: Prefix, pub_cache: str) -> None:
|
||||||
|
|
@ -51,10 +51,10 @@ def install_environment(
|
||||||
with open(prefix_p.path('pubspec.yaml')) as f:
|
with open(prefix_p.path('pubspec.yaml')) as f:
|
||||||
pubspec_contents = yaml_load(f)
|
pubspec_contents = yaml_load(f)
|
||||||
|
|
||||||
helpers.run_setup_cmd(prefix_p, ('dart', 'pub', 'get'), env=dart_env)
|
lang_base.setup_cmd(prefix_p, ('dart', 'pub', 'get'), env=dart_env)
|
||||||
|
|
||||||
for executable in pubspec_contents['executables']:
|
for executable in pubspec_contents['executables']:
|
||||||
helpers.run_setup_cmd(
|
lang_base.setup_cmd(
|
||||||
prefix_p,
|
prefix_p,
|
||||||
(
|
(
|
||||||
'dart', 'compile', 'exe',
|
'dart', 'compile', 'exe',
|
||||||
|
|
@ -77,7 +77,7 @@ def install_environment(
|
||||||
else:
|
else:
|
||||||
dep_cmd = (dep,)
|
dep_cmd = (dep,)
|
||||||
|
|
||||||
helpers.run_setup_cmd(
|
lang_base.setup_cmd(
|
||||||
prefix,
|
prefix,
|
||||||
('dart', 'pub', 'cache', 'add', *dep_cmd),
|
('dart', 'pub', 'cache', 'add', *dep_cmd),
|
||||||
env={**os.environ, 'PUB_CACHE': dep_tmp},
|
env={**os.environ, 'PUB_CACHE': dep_tmp},
|
||||||
|
|
|
||||||
|
|
@ -5,16 +5,16 @@ import json
|
||||||
import os
|
import os
|
||||||
from typing import Sequence
|
from typing import Sequence
|
||||||
|
|
||||||
from pre_commit.languages import helpers
|
from pre_commit import lang_base
|
||||||
from pre_commit.prefix import Prefix
|
from pre_commit.prefix import Prefix
|
||||||
from pre_commit.util import CalledProcessError
|
from pre_commit.util import CalledProcessError
|
||||||
from pre_commit.util import cmd_output_b
|
from pre_commit.util import cmd_output_b
|
||||||
|
|
||||||
ENVIRONMENT_DIR = 'docker'
|
ENVIRONMENT_DIR = 'docker'
|
||||||
PRE_COMMIT_LABEL = 'PRE_COMMIT'
|
PRE_COMMIT_LABEL = 'PRE_COMMIT'
|
||||||
get_default_version = helpers.basic_get_default_version
|
get_default_version = lang_base.basic_get_default_version
|
||||||
health_check = helpers.basic_health_check
|
health_check = lang_base.basic_health_check
|
||||||
in_env = helpers.no_env # no special environment for docker
|
in_env = lang_base.no_env # no special environment for docker
|
||||||
|
|
||||||
|
|
||||||
def _is_in_docker() -> bool:
|
def _is_in_docker() -> bool:
|
||||||
|
|
@ -84,16 +84,16 @@ def build_docker_image(
|
||||||
cmd += ('--pull',)
|
cmd += ('--pull',)
|
||||||
# This must come last for old versions of docker. See #477
|
# This must come last for old versions of docker. See #477
|
||||||
cmd += ('.',)
|
cmd += ('.',)
|
||||||
helpers.run_setup_cmd(prefix, cmd)
|
lang_base.setup_cmd(prefix, cmd)
|
||||||
|
|
||||||
|
|
||||||
def install_environment(
|
def install_environment(
|
||||||
prefix: Prefix, version: str, additional_dependencies: Sequence[str],
|
prefix: Prefix, version: str, additional_dependencies: Sequence[str],
|
||||||
) -> None: # pragma: win32 no cover
|
) -> None: # pragma: win32 no cover
|
||||||
helpers.assert_version_default('docker', version)
|
lang_base.assert_version_default('docker', version)
|
||||||
helpers.assert_no_additional_deps('docker', additional_dependencies)
|
lang_base.assert_no_additional_deps('docker', additional_dependencies)
|
||||||
|
|
||||||
directory = helpers.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
directory = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
||||||
|
|
||||||
# Docker doesn't really have relevant disk environment, but pre-commit
|
# Docker doesn't really have relevant disk environment, but pre-commit
|
||||||
# still needs to cleanup its state files on failure
|
# still needs to cleanup its state files on failure
|
||||||
|
|
@ -135,10 +135,10 @@ def run_hook(
|
||||||
# automated cleanup of docker images.
|
# automated cleanup of docker images.
|
||||||
build_docker_image(prefix, pull=False)
|
build_docker_image(prefix, pull=False)
|
||||||
|
|
||||||
entry_exe, *cmd_rest = helpers.hook_cmd(entry, args)
|
entry_exe, *cmd_rest = lang_base.hook_cmd(entry, args)
|
||||||
|
|
||||||
entry_tag = ('--entrypoint', entry_exe, docker_tag(prefix))
|
entry_tag = ('--entrypoint', entry_exe, docker_tag(prefix))
|
||||||
return helpers.run_xargs(
|
return lang_base.run_xargs(
|
||||||
(*docker_cmd(), *entry_tag, *cmd_rest),
|
(*docker_cmd(), *entry_tag, *cmd_rest),
|
||||||
file_args,
|
file_args,
|
||||||
require_serial=require_serial,
|
require_serial=require_serial,
|
||||||
|
|
|
||||||
|
|
@ -2,15 +2,15 @@ from __future__ import annotations
|
||||||
|
|
||||||
from typing import Sequence
|
from typing import Sequence
|
||||||
|
|
||||||
from pre_commit.languages import helpers
|
from pre_commit import lang_base
|
||||||
from pre_commit.languages.docker import docker_cmd
|
from pre_commit.languages.docker import docker_cmd
|
||||||
from pre_commit.prefix import Prefix
|
from pre_commit.prefix import Prefix
|
||||||
|
|
||||||
ENVIRONMENT_DIR = None
|
ENVIRONMENT_DIR = None
|
||||||
get_default_version = helpers.basic_get_default_version
|
get_default_version = lang_base.basic_get_default_version
|
||||||
health_check = helpers.basic_health_check
|
health_check = lang_base.basic_health_check
|
||||||
install_environment = helpers.no_install
|
install_environment = lang_base.no_install
|
||||||
in_env = helpers.no_env
|
in_env = lang_base.no_env
|
||||||
|
|
||||||
|
|
||||||
def run_hook(
|
def run_hook(
|
||||||
|
|
@ -23,8 +23,8 @@ def run_hook(
|
||||||
require_serial: bool,
|
require_serial: bool,
|
||||||
color: bool,
|
color: bool,
|
||||||
) -> tuple[int, bytes]: # pragma: win32 no cover
|
) -> tuple[int, bytes]: # pragma: win32 no cover
|
||||||
cmd = docker_cmd() + helpers.hook_cmd(entry, args)
|
cmd = docker_cmd() + lang_base.hook_cmd(entry, args)
|
||||||
return helpers.run_xargs(
|
return lang_base.run_xargs(
|
||||||
cmd,
|
cmd,
|
||||||
file_args,
|
file_args,
|
||||||
require_serial=require_serial,
|
require_serial=require_serial,
|
||||||
|
|
|
||||||
|
|
@ -9,18 +9,18 @@ import zipfile
|
||||||
from typing import Generator
|
from typing import Generator
|
||||||
from typing import Sequence
|
from typing import Sequence
|
||||||
|
|
||||||
|
from pre_commit import lang_base
|
||||||
from pre_commit.envcontext import envcontext
|
from pre_commit.envcontext import envcontext
|
||||||
from pre_commit.envcontext import PatchesT
|
from pre_commit.envcontext import PatchesT
|
||||||
from pre_commit.envcontext import Var
|
from pre_commit.envcontext import Var
|
||||||
from pre_commit.languages import helpers
|
|
||||||
from pre_commit.prefix import Prefix
|
from pre_commit.prefix import Prefix
|
||||||
|
|
||||||
ENVIRONMENT_DIR = 'dotnetenv'
|
ENVIRONMENT_DIR = 'dotnetenv'
|
||||||
BIN_DIR = 'bin'
|
BIN_DIR = 'bin'
|
||||||
|
|
||||||
get_default_version = helpers.basic_get_default_version
|
get_default_version = lang_base.basic_get_default_version
|
||||||
health_check = helpers.basic_health_check
|
health_check = lang_base.basic_health_check
|
||||||
run_hook = helpers.basic_run_hook
|
run_hook = lang_base.basic_run_hook
|
||||||
|
|
||||||
|
|
||||||
def get_env_patch(venv: str) -> PatchesT:
|
def get_env_patch(venv: str) -> PatchesT:
|
||||||
|
|
@ -31,7 +31,7 @@ def get_env_patch(venv: str) -> PatchesT:
|
||||||
|
|
||||||
@contextlib.contextmanager
|
@contextlib.contextmanager
|
||||||
def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
|
def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
|
||||||
envdir = helpers.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
||||||
with envcontext(get_env_patch(envdir)):
|
with envcontext(get_env_patch(envdir)):
|
||||||
yield
|
yield
|
||||||
|
|
||||||
|
|
@ -57,14 +57,14 @@ def install_environment(
|
||||||
version: str,
|
version: str,
|
||||||
additional_dependencies: Sequence[str],
|
additional_dependencies: Sequence[str],
|
||||||
) -> None:
|
) -> None:
|
||||||
helpers.assert_version_default('dotnet', version)
|
lang_base.assert_version_default('dotnet', version)
|
||||||
helpers.assert_no_additional_deps('dotnet', additional_dependencies)
|
lang_base.assert_no_additional_deps('dotnet', additional_dependencies)
|
||||||
|
|
||||||
envdir = helpers.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
||||||
build_dir = prefix.path('pre-commit-build')
|
build_dir = prefix.path('pre-commit-build')
|
||||||
|
|
||||||
# Build & pack nupkg file
|
# Build & pack nupkg file
|
||||||
helpers.run_setup_cmd(
|
lang_base.setup_cmd(
|
||||||
prefix,
|
prefix,
|
||||||
(
|
(
|
||||||
'dotnet', 'pack',
|
'dotnet', 'pack',
|
||||||
|
|
@ -99,7 +99,7 @@ def install_environment(
|
||||||
|
|
||||||
# Install to bin dir
|
# Install to bin dir
|
||||||
with _nuget_config_no_sources() as nuget_config:
|
with _nuget_config_no_sources() as nuget_config:
|
||||||
helpers.run_setup_cmd(
|
lang_base.setup_cmd(
|
||||||
prefix,
|
prefix,
|
||||||
(
|
(
|
||||||
'dotnet', 'tool', 'install',
|
'dotnet', 'tool', 'install',
|
||||||
|
|
|
||||||
|
|
@ -2,14 +2,14 @@ from __future__ import annotations
|
||||||
|
|
||||||
from typing import Sequence
|
from typing import Sequence
|
||||||
|
|
||||||
from pre_commit.languages import helpers
|
from pre_commit import lang_base
|
||||||
from pre_commit.prefix import Prefix
|
from pre_commit.prefix import Prefix
|
||||||
|
|
||||||
ENVIRONMENT_DIR = None
|
ENVIRONMENT_DIR = None
|
||||||
get_default_version = helpers.basic_get_default_version
|
get_default_version = lang_base.basic_get_default_version
|
||||||
health_check = helpers.basic_health_check
|
health_check = lang_base.basic_health_check
|
||||||
install_environment = helpers.no_install
|
install_environment = lang_base.no_install
|
||||||
in_env = helpers.no_env
|
in_env = lang_base.no_env
|
||||||
|
|
||||||
|
|
||||||
def run_hook(
|
def run_hook(
|
||||||
|
|
|
||||||
|
|
@ -19,17 +19,17 @@ from typing import Protocol
|
||||||
from typing import Sequence
|
from typing import Sequence
|
||||||
|
|
||||||
import pre_commit.constants as C
|
import pre_commit.constants as C
|
||||||
|
from pre_commit import lang_base
|
||||||
from pre_commit.envcontext import envcontext
|
from pre_commit.envcontext import envcontext
|
||||||
from pre_commit.envcontext import PatchesT
|
from pre_commit.envcontext import PatchesT
|
||||||
from pre_commit.envcontext import Var
|
from pre_commit.envcontext import Var
|
||||||
from pre_commit.languages import helpers
|
|
||||||
from pre_commit.prefix import Prefix
|
from pre_commit.prefix import Prefix
|
||||||
from pre_commit.util import cmd_output
|
from pre_commit.util import cmd_output
|
||||||
from pre_commit.util import rmtree
|
from pre_commit.util import rmtree
|
||||||
|
|
||||||
ENVIRONMENT_DIR = 'golangenv'
|
ENVIRONMENT_DIR = 'golangenv'
|
||||||
health_check = helpers.basic_health_check
|
health_check = lang_base.basic_health_check
|
||||||
run_hook = helpers.basic_run_hook
|
run_hook = lang_base.basic_run_hook
|
||||||
|
|
||||||
_ARCH_ALIASES = {
|
_ARCH_ALIASES = {
|
||||||
'x86_64': 'amd64',
|
'x86_64': 'amd64',
|
||||||
|
|
@ -60,7 +60,7 @@ else: # pragma: win32 no cover
|
||||||
|
|
||||||
@functools.lru_cache(maxsize=1)
|
@functools.lru_cache(maxsize=1)
|
||||||
def get_default_version() -> str:
|
def get_default_version() -> str:
|
||||||
if helpers.exe_exists('go'):
|
if lang_base.exe_exists('go'):
|
||||||
return 'system'
|
return 'system'
|
||||||
else:
|
else:
|
||||||
return C.DEFAULT
|
return C.DEFAULT
|
||||||
|
|
@ -121,7 +121,7 @@ def _install_go(version: str, dest: str) -> None:
|
||||||
|
|
||||||
@contextlib.contextmanager
|
@contextlib.contextmanager
|
||||||
def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
|
def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
|
||||||
envdir = helpers.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
||||||
with envcontext(get_env_patch(envdir, version)):
|
with envcontext(get_env_patch(envdir, version)):
|
||||||
yield
|
yield
|
||||||
|
|
||||||
|
|
@ -131,7 +131,7 @@ def install_environment(
|
||||||
version: str,
|
version: str,
|
||||||
additional_dependencies: Sequence[str],
|
additional_dependencies: Sequence[str],
|
||||||
) -> None:
|
) -> None:
|
||||||
env_dir = helpers.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
env_dir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
||||||
|
|
||||||
if version != 'system':
|
if version != 'system':
|
||||||
_install_go(version, env_dir)
|
_install_go(version, env_dir)
|
||||||
|
|
@ -149,9 +149,9 @@ def install_environment(
|
||||||
os.path.join(env_dir, '.go', 'bin'), os.environ['PATH'],
|
os.path.join(env_dir, '.go', 'bin'), os.environ['PATH'],
|
||||||
))
|
))
|
||||||
|
|
||||||
helpers.run_setup_cmd(prefix, ('go', 'install', './...'), env=env)
|
lang_base.setup_cmd(prefix, ('go', 'install', './...'), env=env)
|
||||||
for dependency in additional_dependencies:
|
for dependency in additional_dependencies:
|
||||||
helpers.run_setup_cmd(prefix, ('go', 'install', dependency), env=env)
|
lang_base.setup_cmd(prefix, ('go', 'install', dependency), env=env)
|
||||||
|
|
||||||
# save some disk space -- we don't need this after installation
|
# save some disk space -- we don't need this after installation
|
||||||
pkgdir = os.path.join(env_dir, 'pkg')
|
pkgdir = os.path.join(env_dir, 'pkg')
|
||||||
|
|
|
||||||
|
|
@ -6,17 +6,17 @@ import sys
|
||||||
from typing import Generator
|
from typing import Generator
|
||||||
from typing import Sequence
|
from typing import Sequence
|
||||||
|
|
||||||
|
from pre_commit import lang_base
|
||||||
from pre_commit.envcontext import envcontext
|
from pre_commit.envcontext import envcontext
|
||||||
from pre_commit.envcontext import PatchesT
|
from pre_commit.envcontext import PatchesT
|
||||||
from pre_commit.envcontext import Var
|
from pre_commit.envcontext import Var
|
||||||
from pre_commit.languages import helpers
|
|
||||||
from pre_commit.prefix import Prefix
|
from pre_commit.prefix import Prefix
|
||||||
from pre_commit.util import cmd_output
|
from pre_commit.util import cmd_output
|
||||||
|
|
||||||
ENVIRONMENT_DIR = 'lua_env'
|
ENVIRONMENT_DIR = 'lua_env'
|
||||||
get_default_version = helpers.basic_get_default_version
|
get_default_version = lang_base.basic_get_default_version
|
||||||
health_check = helpers.basic_health_check
|
health_check = lang_base.basic_health_check
|
||||||
run_hook = helpers.basic_run_hook
|
run_hook = lang_base.basic_run_hook
|
||||||
|
|
||||||
|
|
||||||
def _get_lua_version() -> str: # pragma: win32 no cover
|
def _get_lua_version() -> str: # pragma: win32 no cover
|
||||||
|
|
@ -45,7 +45,7 @@ def get_env_patch(d: str) -> PatchesT: # pragma: win32 no cover
|
||||||
|
|
||||||
@contextlib.contextmanager # pragma: win32 no cover
|
@contextlib.contextmanager # pragma: win32 no cover
|
||||||
def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
|
def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
|
||||||
envdir = helpers.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
||||||
with envcontext(get_env_patch(envdir)):
|
with envcontext(get_env_patch(envdir)):
|
||||||
yield
|
yield
|
||||||
|
|
||||||
|
|
@ -55,9 +55,9 @@ def install_environment(
|
||||||
version: str,
|
version: str,
|
||||||
additional_dependencies: Sequence[str],
|
additional_dependencies: Sequence[str],
|
||||||
) -> None: # pragma: win32 no cover
|
) -> None: # pragma: win32 no cover
|
||||||
helpers.assert_version_default('lua', version)
|
lang_base.assert_version_default('lua', version)
|
||||||
|
|
||||||
envdir = helpers.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
||||||
with in_env(prefix, version):
|
with in_env(prefix, version):
|
||||||
# luarocks doesn't bootstrap a tree prior to installing
|
# luarocks doesn't bootstrap a tree prior to installing
|
||||||
# so ensure the directory exists.
|
# so ensure the directory exists.
|
||||||
|
|
@ -66,10 +66,10 @@ def install_environment(
|
||||||
# Older luarocks (e.g., 2.4.2) expect the rockspec as an arg
|
# Older luarocks (e.g., 2.4.2) expect the rockspec as an arg
|
||||||
for rockspec in prefix.star('.rockspec'):
|
for rockspec in prefix.star('.rockspec'):
|
||||||
make_cmd = ('luarocks', '--tree', envdir, 'make', rockspec)
|
make_cmd = ('luarocks', '--tree', envdir, 'make', rockspec)
|
||||||
helpers.run_setup_cmd(prefix, make_cmd)
|
lang_base.setup_cmd(prefix, make_cmd)
|
||||||
|
|
||||||
# luarocks can't install multiple packages at once
|
# luarocks can't install multiple packages at once
|
||||||
# so install them individually.
|
# so install them individually.
|
||||||
for dependency in additional_dependencies:
|
for dependency in additional_dependencies:
|
||||||
cmd = ('luarocks', '--tree', envdir, 'install', dependency)
|
cmd = ('luarocks', '--tree', envdir, 'install', dependency)
|
||||||
helpers.run_setup_cmd(prefix, cmd)
|
lang_base.setup_cmd(prefix, cmd)
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@ from typing import Generator
|
||||||
from typing import Sequence
|
from typing import Sequence
|
||||||
|
|
||||||
import pre_commit.constants as C
|
import pre_commit.constants as C
|
||||||
|
from pre_commit import lang_base
|
||||||
from pre_commit.envcontext import envcontext
|
from pre_commit.envcontext import envcontext
|
||||||
from pre_commit.envcontext import PatchesT
|
from pre_commit.envcontext import PatchesT
|
||||||
from pre_commit.envcontext import UNSET
|
from pre_commit.envcontext import UNSET
|
||||||
from pre_commit.envcontext import Var
|
from pre_commit.envcontext import Var
|
||||||
from pre_commit.languages import helpers
|
|
||||||
from pre_commit.languages.python import bin_dir
|
from pre_commit.languages.python import bin_dir
|
||||||
from pre_commit.prefix import Prefix
|
from pre_commit.prefix import Prefix
|
||||||
from pre_commit.util import cmd_output
|
from pre_commit.util import cmd_output
|
||||||
|
|
@ -20,7 +20,7 @@ from pre_commit.util import cmd_output_b
|
||||||
from pre_commit.util import rmtree
|
from pre_commit.util import rmtree
|
||||||
|
|
||||||
ENVIRONMENT_DIR = 'node_env'
|
ENVIRONMENT_DIR = 'node_env'
|
||||||
run_hook = helpers.basic_run_hook
|
run_hook = lang_base.basic_run_hook
|
||||||
|
|
||||||
|
|
||||||
@functools.lru_cache(maxsize=1)
|
@functools.lru_cache(maxsize=1)
|
||||||
|
|
@ -30,7 +30,7 @@ def get_default_version() -> str:
|
||||||
return C.DEFAULT
|
return C.DEFAULT
|
||||||
# if node is already installed, we can save a bunch of setup time by
|
# if node is already installed, we can save a bunch of setup time by
|
||||||
# using the installed version
|
# using the installed version
|
||||||
elif all(helpers.exe_exists(exe) for exe in ('node', 'npm')):
|
elif all(lang_base.exe_exists(exe) for exe in ('node', 'npm')):
|
||||||
return 'system'
|
return 'system'
|
||||||
else:
|
else:
|
||||||
return C.DEFAULT
|
return C.DEFAULT
|
||||||
|
|
@ -60,13 +60,13 @@ def get_env_patch(venv: str) -> PatchesT:
|
||||||
|
|
||||||
@contextlib.contextmanager
|
@contextlib.contextmanager
|
||||||
def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
|
def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
|
||||||
envdir = helpers.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
||||||
with envcontext(get_env_patch(envdir)):
|
with envcontext(get_env_patch(envdir)):
|
||||||
yield
|
yield
|
||||||
|
|
||||||
|
|
||||||
def health_check(prefix: Prefix, language_version: str) -> str | None:
|
def health_check(prefix: Prefix, version: str) -> str | None:
|
||||||
with in_env(prefix, language_version):
|
with in_env(prefix, version):
|
||||||
retcode, _, _ = cmd_output_b('node', '--version', check=False)
|
retcode, _, _ = cmd_output_b('node', '--version', check=False)
|
||||||
if retcode != 0: # pragma: win32 no cover
|
if retcode != 0: # pragma: win32 no cover
|
||||||
return f'`node --version` returned {retcode}'
|
return f'`node --version` returned {retcode}'
|
||||||
|
|
@ -78,7 +78,7 @@ def install_environment(
|
||||||
prefix: Prefix, version: str, additional_dependencies: Sequence[str],
|
prefix: Prefix, version: str, additional_dependencies: Sequence[str],
|
||||||
) -> None:
|
) -> None:
|
||||||
assert prefix.exists('package.json')
|
assert prefix.exists('package.json')
|
||||||
envdir = helpers.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
||||||
|
|
||||||
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx?f=255&MSPPError=-2147217396#maxpath
|
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx?f=255&MSPPError=-2147217396#maxpath
|
||||||
if sys.platform == 'win32': # pragma: no cover
|
if sys.platform == 'win32': # pragma: no cover
|
||||||
|
|
@ -96,13 +96,13 @@ def install_environment(
|
||||||
'npm', 'install', '--dev', '--prod',
|
'npm', 'install', '--dev', '--prod',
|
||||||
'--ignore-prepublish', '--no-progress', '--no-save',
|
'--ignore-prepublish', '--no-progress', '--no-save',
|
||||||
)
|
)
|
||||||
helpers.run_setup_cmd(prefix, local_install_cmd)
|
lang_base.setup_cmd(prefix, local_install_cmd)
|
||||||
|
|
||||||
_, pkg, _ = cmd_output('npm', 'pack', cwd=prefix.prefix_dir)
|
_, pkg, _ = cmd_output('npm', 'pack', cwd=prefix.prefix_dir)
|
||||||
pkg = prefix.path(pkg.strip())
|
pkg = prefix.path(pkg.strip())
|
||||||
|
|
||||||
install = ('npm', 'install', '-g', pkg, *additional_dependencies)
|
install = ('npm', 'install', '-g', pkg, *additional_dependencies)
|
||||||
helpers.run_setup_cmd(prefix, install)
|
lang_base.setup_cmd(prefix, install)
|
||||||
|
|
||||||
# clean these up after installation
|
# clean these up after installation
|
||||||
if prefix.exists('node_modules'): # pragma: win32 no cover
|
if prefix.exists('node_modules'): # pragma: win32 no cover
|
||||||
|
|
|
||||||
|
|
@ -6,16 +6,16 @@ import shlex
|
||||||
from typing import Generator
|
from typing import Generator
|
||||||
from typing import Sequence
|
from typing import Sequence
|
||||||
|
|
||||||
|
from pre_commit import lang_base
|
||||||
from pre_commit.envcontext import envcontext
|
from pre_commit.envcontext import envcontext
|
||||||
from pre_commit.envcontext import PatchesT
|
from pre_commit.envcontext import PatchesT
|
||||||
from pre_commit.envcontext import Var
|
from pre_commit.envcontext import Var
|
||||||
from pre_commit.languages import helpers
|
|
||||||
from pre_commit.prefix import Prefix
|
from pre_commit.prefix import Prefix
|
||||||
|
|
||||||
ENVIRONMENT_DIR = 'perl_env'
|
ENVIRONMENT_DIR = 'perl_env'
|
||||||
get_default_version = helpers.basic_get_default_version
|
get_default_version = lang_base.basic_get_default_version
|
||||||
health_check = helpers.basic_health_check
|
health_check = lang_base.basic_health_check
|
||||||
run_hook = helpers.basic_run_hook
|
run_hook = lang_base.basic_run_hook
|
||||||
|
|
||||||
|
|
||||||
def get_env_patch(venv: str) -> PatchesT:
|
def get_env_patch(venv: str) -> PatchesT:
|
||||||
|
|
@ -34,7 +34,7 @@ def get_env_patch(venv: str) -> PatchesT:
|
||||||
|
|
||||||
@contextlib.contextmanager
|
@contextlib.contextmanager
|
||||||
def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
|
def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
|
||||||
envdir = helpers.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
||||||
with envcontext(get_env_patch(envdir)):
|
with envcontext(get_env_patch(envdir)):
|
||||||
yield
|
yield
|
||||||
|
|
||||||
|
|
@ -42,9 +42,9 @@ def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
|
||||||
def install_environment(
|
def install_environment(
|
||||||
prefix: Prefix, version: str, additional_dependencies: Sequence[str],
|
prefix: Prefix, version: str, additional_dependencies: Sequence[str],
|
||||||
) -> None:
|
) -> None:
|
||||||
helpers.assert_version_default('perl', version)
|
lang_base.assert_version_default('perl', version)
|
||||||
|
|
||||||
with in_env(prefix, version):
|
with in_env(prefix, version):
|
||||||
helpers.run_setup_cmd(
|
lang_base.setup_cmd(
|
||||||
prefix, ('cpan', '-T', '.', *additional_dependencies),
|
prefix, ('cpan', '-T', '.', *additional_dependencies),
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -7,16 +7,16 @@ from typing import NamedTuple
|
||||||
from typing import Pattern
|
from typing import Pattern
|
||||||
from typing import Sequence
|
from typing import Sequence
|
||||||
|
|
||||||
|
from pre_commit import lang_base
|
||||||
from pre_commit import output
|
from pre_commit import output
|
||||||
from pre_commit.languages import helpers
|
|
||||||
from pre_commit.prefix import Prefix
|
from pre_commit.prefix import Prefix
|
||||||
from pre_commit.xargs import xargs
|
from pre_commit.xargs import xargs
|
||||||
|
|
||||||
ENVIRONMENT_DIR = None
|
ENVIRONMENT_DIR = None
|
||||||
get_default_version = helpers.basic_get_default_version
|
get_default_version = lang_base.basic_get_default_version
|
||||||
health_check = helpers.basic_health_check
|
health_check = lang_base.basic_health_check
|
||||||
install_environment = helpers.no_install
|
install_environment = lang_base.no_install
|
||||||
in_env = helpers.no_env
|
in_env = lang_base.no_env
|
||||||
|
|
||||||
|
|
||||||
def _process_filename_by_line(pattern: Pattern[bytes], filename: str) -> int:
|
def _process_filename_by_line(pattern: Pattern[bytes], filename: str) -> int:
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@ from typing import Generator
|
||||||
from typing import Sequence
|
from typing import Sequence
|
||||||
|
|
||||||
import pre_commit.constants as C
|
import pre_commit.constants as C
|
||||||
|
from pre_commit import lang_base
|
||||||
from pre_commit.envcontext import envcontext
|
from pre_commit.envcontext import envcontext
|
||||||
from pre_commit.envcontext import PatchesT
|
from pre_commit.envcontext import PatchesT
|
||||||
from pre_commit.envcontext import UNSET
|
from pre_commit.envcontext import UNSET
|
||||||
from pre_commit.envcontext import Var
|
from pre_commit.envcontext import Var
|
||||||
from pre_commit.languages import helpers
|
|
||||||
from pre_commit.parse_shebang import find_executable
|
from pre_commit.parse_shebang import find_executable
|
||||||
from pre_commit.prefix import Prefix
|
from pre_commit.prefix import Prefix
|
||||||
from pre_commit.util import CalledProcessError
|
from pre_commit.util import CalledProcessError
|
||||||
|
|
@ -21,7 +21,7 @@ from pre_commit.util import cmd_output_b
|
||||||
from pre_commit.util import win_exe
|
from pre_commit.util import win_exe
|
||||||
|
|
||||||
ENVIRONMENT_DIR = 'py_env'
|
ENVIRONMENT_DIR = 'py_env'
|
||||||
run_hook = helpers.basic_run_hook
|
run_hook = lang_base.basic_run_hook
|
||||||
|
|
||||||
|
|
||||||
@functools.lru_cache(maxsize=None)
|
@functools.lru_cache(maxsize=None)
|
||||||
|
|
@ -153,13 +153,13 @@ def norm_version(version: str) -> str | None:
|
||||||
|
|
||||||
@contextlib.contextmanager
|
@contextlib.contextmanager
|
||||||
def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
|
def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
|
||||||
envdir = helpers.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
||||||
with envcontext(get_env_patch(envdir)):
|
with envcontext(get_env_patch(envdir)):
|
||||||
yield
|
yield
|
||||||
|
|
||||||
|
|
||||||
def health_check(prefix: Prefix, language_version: str) -> str | None:
|
def health_check(prefix: Prefix, version: str) -> str | None:
|
||||||
envdir = helpers.environment_dir(prefix, ENVIRONMENT_DIR, language_version)
|
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
||||||
pyvenv_cfg = os.path.join(envdir, 'pyvenv.cfg')
|
pyvenv_cfg = os.path.join(envdir, 'pyvenv.cfg')
|
||||||
|
|
||||||
# created with "old" virtualenv
|
# created with "old" virtualenv
|
||||||
|
|
@ -202,7 +202,7 @@ def install_environment(
|
||||||
version: str,
|
version: str,
|
||||||
additional_dependencies: Sequence[str],
|
additional_dependencies: Sequence[str],
|
||||||
) -> None:
|
) -> None:
|
||||||
envdir = helpers.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
||||||
venv_cmd = [sys.executable, '-mvirtualenv', envdir]
|
venv_cmd = [sys.executable, '-mvirtualenv', envdir]
|
||||||
python = norm_version(version)
|
python = norm_version(version)
|
||||||
if python is not None:
|
if python is not None:
|
||||||
|
|
@ -211,4 +211,4 @@ def install_environment(
|
||||||
|
|
||||||
cmd_output_b(*venv_cmd, cwd='/')
|
cmd_output_b(*venv_cmd, cwd='/')
|
||||||
with in_env(prefix, version):
|
with in_env(prefix, version):
|
||||||
helpers.run_setup_cmd(prefix, install_cmd)
|
lang_base.setup_cmd(prefix, install_cmd)
|
||||||
|
|
|
||||||
|
|
@ -7,18 +7,18 @@ import shutil
|
||||||
from typing import Generator
|
from typing import Generator
|
||||||
from typing import Sequence
|
from typing import Sequence
|
||||||
|
|
||||||
|
from pre_commit import lang_base
|
||||||
from pre_commit.envcontext import envcontext
|
from pre_commit.envcontext import envcontext
|
||||||
from pre_commit.envcontext import PatchesT
|
from pre_commit.envcontext import PatchesT
|
||||||
from pre_commit.envcontext import UNSET
|
from pre_commit.envcontext import UNSET
|
||||||
from pre_commit.languages import helpers
|
|
||||||
from pre_commit.prefix import Prefix
|
from pre_commit.prefix import Prefix
|
||||||
from pre_commit.util import cmd_output_b
|
from pre_commit.util import cmd_output_b
|
||||||
from pre_commit.util import win_exe
|
from pre_commit.util import win_exe
|
||||||
|
|
||||||
ENVIRONMENT_DIR = 'renv'
|
ENVIRONMENT_DIR = 'renv'
|
||||||
RSCRIPT_OPTS = ('--no-save', '--no-restore', '--no-site-file', '--no-environ')
|
RSCRIPT_OPTS = ('--no-save', '--no-restore', '--no-site-file', '--no-environ')
|
||||||
get_default_version = helpers.basic_get_default_version
|
get_default_version = lang_base.basic_get_default_version
|
||||||
health_check = helpers.basic_health_check
|
health_check = lang_base.basic_health_check
|
||||||
|
|
||||||
|
|
||||||
def get_env_patch(venv: str) -> PatchesT:
|
def get_env_patch(venv: str) -> PatchesT:
|
||||||
|
|
@ -30,7 +30,7 @@ def get_env_patch(venv: str) -> PatchesT:
|
||||||
|
|
||||||
@contextlib.contextmanager
|
@contextlib.contextmanager
|
||||||
def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
|
def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
|
||||||
envdir = helpers.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
||||||
with envcontext(get_env_patch(envdir)):
|
with envcontext(get_env_patch(envdir)):
|
||||||
yield
|
yield
|
||||||
|
|
||||||
|
|
@ -93,7 +93,7 @@ def install_environment(
|
||||||
version: str,
|
version: str,
|
||||||
additional_dependencies: Sequence[str],
|
additional_dependencies: Sequence[str],
|
||||||
) -> None:
|
) -> None:
|
||||||
env_dir = helpers.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
env_dir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
||||||
os.makedirs(env_dir, exist_ok=True)
|
os.makedirs(env_dir, exist_ok=True)
|
||||||
shutil.copy(prefix.path('renv.lock'), env_dir)
|
shutil.copy(prefix.path('renv.lock'), env_dir)
|
||||||
shutil.copytree(prefix.path('renv'), os.path.join(env_dir, 'renv'))
|
shutil.copytree(prefix.path('renv'), os.path.join(env_dir, 'renv'))
|
||||||
|
|
@ -166,7 +166,7 @@ def run_hook(
|
||||||
color: bool,
|
color: bool,
|
||||||
) -> tuple[int, bytes]:
|
) -> tuple[int, bytes]:
|
||||||
cmd = _cmd_from_hook(prefix, entry, args, is_local=is_local)
|
cmd = _cmd_from_hook(prefix, entry, args, is_local=is_local)
|
||||||
return helpers.run_xargs(
|
return lang_base.run_xargs(
|
||||||
cmd,
|
cmd,
|
||||||
file_args,
|
file_args,
|
||||||
require_serial=require_serial,
|
require_serial=require_serial,
|
||||||
|
|
|
||||||
|
|
@ -9,23 +9,23 @@ from typing import Generator
|
||||||
from typing import Sequence
|
from typing import Sequence
|
||||||
|
|
||||||
import pre_commit.constants as C
|
import pre_commit.constants as C
|
||||||
|
from pre_commit import lang_base
|
||||||
from pre_commit.envcontext import envcontext
|
from pre_commit.envcontext import envcontext
|
||||||
from pre_commit.envcontext import PatchesT
|
from pre_commit.envcontext import PatchesT
|
||||||
from pre_commit.envcontext import UNSET
|
from pre_commit.envcontext import UNSET
|
||||||
from pre_commit.envcontext import Var
|
from pre_commit.envcontext import Var
|
||||||
from pre_commit.languages import helpers
|
|
||||||
from pre_commit.prefix import Prefix
|
from pre_commit.prefix import Prefix
|
||||||
from pre_commit.util import CalledProcessError
|
from pre_commit.util import CalledProcessError
|
||||||
from pre_commit.util import resource_bytesio
|
from pre_commit.util import resource_bytesio
|
||||||
|
|
||||||
ENVIRONMENT_DIR = 'rbenv'
|
ENVIRONMENT_DIR = 'rbenv'
|
||||||
health_check = helpers.basic_health_check
|
health_check = lang_base.basic_health_check
|
||||||
run_hook = helpers.basic_run_hook
|
run_hook = lang_base.basic_run_hook
|
||||||
|
|
||||||
|
|
||||||
@functools.lru_cache(maxsize=1)
|
@functools.lru_cache(maxsize=1)
|
||||||
def get_default_version() -> str:
|
def get_default_version() -> str:
|
||||||
if all(helpers.exe_exists(exe) for exe in ('ruby', 'gem')):
|
if all(lang_base.exe_exists(exe) for exe in ('ruby', 'gem')):
|
||||||
return 'system'
|
return 'system'
|
||||||
else:
|
else:
|
||||||
return C.DEFAULT
|
return C.DEFAULT
|
||||||
|
|
@ -68,7 +68,7 @@ def get_env_patch(
|
||||||
|
|
||||||
@contextlib.contextmanager
|
@contextlib.contextmanager
|
||||||
def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
|
def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
|
||||||
envdir = helpers.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
||||||
with envcontext(get_env_patch(envdir, version)):
|
with envcontext(get_env_patch(envdir, version)):
|
||||||
yield
|
yield
|
||||||
|
|
||||||
|
|
@ -83,7 +83,7 @@ def _install_rbenv(
|
||||||
prefix: Prefix,
|
prefix: Prefix,
|
||||||
version: str,
|
version: str,
|
||||||
) -> None: # pragma: win32 no cover
|
) -> None: # pragma: win32 no cover
|
||||||
envdir = helpers.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
||||||
|
|
||||||
_extract_resource('rbenv.tar.gz', prefix.path('.'))
|
_extract_resource('rbenv.tar.gz', prefix.path('.'))
|
||||||
shutil.move(prefix.path('rbenv'), envdir)
|
shutil.move(prefix.path('rbenv'), envdir)
|
||||||
|
|
@ -100,10 +100,10 @@ def _install_ruby(
|
||||||
version: str,
|
version: str,
|
||||||
) -> None: # pragma: win32 no cover
|
) -> None: # pragma: win32 no cover
|
||||||
try:
|
try:
|
||||||
helpers.run_setup_cmd(prefix, ('rbenv', 'download', version))
|
lang_base.setup_cmd(prefix, ('rbenv', 'download', version))
|
||||||
except CalledProcessError: # pragma: no cover (usually find with download)
|
except CalledProcessError: # pragma: no cover (usually find with download)
|
||||||
# Failed to download from mirror for some reason, build it instead
|
# Failed to download from mirror for some reason, build it instead
|
||||||
helpers.run_setup_cmd(prefix, ('rbenv', 'install', version))
|
lang_base.setup_cmd(prefix, ('rbenv', 'install', version))
|
||||||
|
|
||||||
|
|
||||||
def install_environment(
|
def install_environment(
|
||||||
|
|
@ -114,17 +114,17 @@ def install_environment(
|
||||||
with in_env(prefix, version):
|
with in_env(prefix, version):
|
||||||
# Need to call this before installing so rbenv's directories
|
# Need to call this before installing so rbenv's directories
|
||||||
# are set up
|
# are set up
|
||||||
helpers.run_setup_cmd(prefix, ('rbenv', 'init', '-'))
|
lang_base.setup_cmd(prefix, ('rbenv', 'init', '-'))
|
||||||
if version != C.DEFAULT:
|
if version != C.DEFAULT:
|
||||||
_install_ruby(prefix, version)
|
_install_ruby(prefix, version)
|
||||||
# Need to call this after installing to set up the shims
|
# Need to call this after installing to set up the shims
|
||||||
helpers.run_setup_cmd(prefix, ('rbenv', 'rehash'))
|
lang_base.setup_cmd(prefix, ('rbenv', 'rehash'))
|
||||||
|
|
||||||
with in_env(prefix, version):
|
with in_env(prefix, version):
|
||||||
helpers.run_setup_cmd(
|
lang_base.setup_cmd(
|
||||||
prefix, ('gem', 'build', *prefix.star('.gemspec')),
|
prefix, ('gem', 'build', *prefix.star('.gemspec')),
|
||||||
)
|
)
|
||||||
helpers.run_setup_cmd(
|
lang_base.setup_cmd(
|
||||||
prefix,
|
prefix,
|
||||||
(
|
(
|
||||||
'gem', 'install',
|
'gem', 'install',
|
||||||
|
|
|
||||||
|
|
@ -11,19 +11,19 @@ from typing import Generator
|
||||||
from typing import Sequence
|
from typing import Sequence
|
||||||
|
|
||||||
import pre_commit.constants as C
|
import pre_commit.constants as C
|
||||||
|
from pre_commit import lang_base
|
||||||
from pre_commit import parse_shebang
|
from pre_commit import parse_shebang
|
||||||
from pre_commit.envcontext import envcontext
|
from pre_commit.envcontext import envcontext
|
||||||
from pre_commit.envcontext import PatchesT
|
from pre_commit.envcontext import PatchesT
|
||||||
from pre_commit.envcontext import Var
|
from pre_commit.envcontext import Var
|
||||||
from pre_commit.languages import helpers
|
|
||||||
from pre_commit.prefix import Prefix
|
from pre_commit.prefix import Prefix
|
||||||
from pre_commit.util import cmd_output_b
|
from pre_commit.util import cmd_output_b
|
||||||
from pre_commit.util import make_executable
|
from pre_commit.util import make_executable
|
||||||
from pre_commit.util import win_exe
|
from pre_commit.util import win_exe
|
||||||
|
|
||||||
ENVIRONMENT_DIR = 'rustenv'
|
ENVIRONMENT_DIR = 'rustenv'
|
||||||
health_check = helpers.basic_health_check
|
health_check = lang_base.basic_health_check
|
||||||
run_hook = helpers.basic_run_hook
|
run_hook = lang_base.basic_run_hook
|
||||||
|
|
||||||
|
|
||||||
@functools.lru_cache(maxsize=1)
|
@functools.lru_cache(maxsize=1)
|
||||||
|
|
@ -63,7 +63,7 @@ def get_env_patch(target_dir: str, version: str) -> PatchesT:
|
||||||
|
|
||||||
@contextlib.contextmanager
|
@contextlib.contextmanager
|
||||||
def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
|
def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
|
||||||
envdir = helpers.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
||||||
with envcontext(get_env_patch(envdir, version)):
|
with envcontext(get_env_patch(envdir, version)):
|
||||||
yield
|
yield
|
||||||
|
|
||||||
|
|
@ -78,7 +78,7 @@ def _add_dependencies(
|
||||||
crate = f'{name}@{spec or "*"}'
|
crate = f'{name}@{spec or "*"}'
|
||||||
crates.append(crate)
|
crates.append(crate)
|
||||||
|
|
||||||
helpers.run_setup_cmd(prefix, ('cargo', 'add', *crates))
|
lang_base.setup_cmd(prefix, ('cargo', 'add', *crates))
|
||||||
|
|
||||||
|
|
||||||
def install_rust_with_toolchain(toolchain: str) -> None:
|
def install_rust_with_toolchain(toolchain: str) -> None:
|
||||||
|
|
@ -116,7 +116,7 @@ def install_environment(
|
||||||
version: str,
|
version: str,
|
||||||
additional_dependencies: Sequence[str],
|
additional_dependencies: Sequence[str],
|
||||||
) -> None:
|
) -> None:
|
||||||
envdir = helpers.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
||||||
|
|
||||||
# There are two cases where we might want to specify more dependencies:
|
# There are two cases where we might want to specify more dependencies:
|
||||||
# as dependencies for the library being built, and as binary packages
|
# as dependencies for the library being built, and as binary packages
|
||||||
|
|
|
||||||
|
|
@ -2,14 +2,14 @@ from __future__ import annotations
|
||||||
|
|
||||||
from typing import Sequence
|
from typing import Sequence
|
||||||
|
|
||||||
from pre_commit.languages import helpers
|
from pre_commit import lang_base
|
||||||
from pre_commit.prefix import Prefix
|
from pre_commit.prefix import Prefix
|
||||||
|
|
||||||
ENVIRONMENT_DIR = None
|
ENVIRONMENT_DIR = None
|
||||||
get_default_version = helpers.basic_get_default_version
|
get_default_version = lang_base.basic_get_default_version
|
||||||
health_check = helpers.basic_health_check
|
health_check = lang_base.basic_health_check
|
||||||
install_environment = helpers.no_install
|
install_environment = lang_base.no_install
|
||||||
in_env = helpers.no_env
|
in_env = lang_base.no_env
|
||||||
|
|
||||||
|
|
||||||
def run_hook(
|
def run_hook(
|
||||||
|
|
@ -22,9 +22,9 @@ def run_hook(
|
||||||
require_serial: bool,
|
require_serial: bool,
|
||||||
color: bool,
|
color: bool,
|
||||||
) -> tuple[int, bytes]:
|
) -> tuple[int, bytes]:
|
||||||
cmd = helpers.hook_cmd(entry, args)
|
cmd = lang_base.hook_cmd(entry, args)
|
||||||
cmd = (prefix.path(cmd[0]), *cmd[1:])
|
cmd = (prefix.path(cmd[0]), *cmd[1:])
|
||||||
return helpers.run_xargs(
|
return lang_base.run_xargs(
|
||||||
cmd,
|
cmd,
|
||||||
file_args,
|
file_args,
|
||||||
require_serial=require_serial,
|
require_serial=require_serial,
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,10 @@ import os
|
||||||
from typing import Generator
|
from typing import Generator
|
||||||
from typing import Sequence
|
from typing import Sequence
|
||||||
|
|
||||||
|
from pre_commit import lang_base
|
||||||
from pre_commit.envcontext import envcontext
|
from pre_commit.envcontext import envcontext
|
||||||
from pre_commit.envcontext import PatchesT
|
from pre_commit.envcontext import PatchesT
|
||||||
from pre_commit.envcontext import Var
|
from pre_commit.envcontext import Var
|
||||||
from pre_commit.languages import helpers
|
|
||||||
from pre_commit.prefix import Prefix
|
from pre_commit.prefix import Prefix
|
||||||
from pre_commit.util import cmd_output_b
|
from pre_commit.util import cmd_output_b
|
||||||
|
|
||||||
|
|
@ -16,9 +16,9 @@ BUILD_DIR = '.build'
|
||||||
BUILD_CONFIG = 'release'
|
BUILD_CONFIG = 'release'
|
||||||
|
|
||||||
ENVIRONMENT_DIR = 'swift_env'
|
ENVIRONMENT_DIR = 'swift_env'
|
||||||
get_default_version = helpers.basic_get_default_version
|
get_default_version = lang_base.basic_get_default_version
|
||||||
health_check = helpers.basic_health_check
|
health_check = lang_base.basic_health_check
|
||||||
run_hook = helpers.basic_run_hook
|
run_hook = lang_base.basic_run_hook
|
||||||
|
|
||||||
|
|
||||||
def get_env_patch(venv: str) -> PatchesT: # pragma: win32 no cover
|
def get_env_patch(venv: str) -> PatchesT: # pragma: win32 no cover
|
||||||
|
|
@ -28,7 +28,7 @@ def get_env_patch(venv: str) -> PatchesT: # pragma: win32 no cover
|
||||||
|
|
||||||
@contextlib.contextmanager # pragma: win32 no cover
|
@contextlib.contextmanager # pragma: win32 no cover
|
||||||
def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
|
def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
|
||||||
envdir = helpers.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
||||||
with envcontext(get_env_patch(envdir)):
|
with envcontext(get_env_patch(envdir)):
|
||||||
yield
|
yield
|
||||||
|
|
||||||
|
|
@ -36,9 +36,9 @@ def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
|
||||||
def install_environment(
|
def install_environment(
|
||||||
prefix: Prefix, version: str, additional_dependencies: Sequence[str],
|
prefix: Prefix, version: str, additional_dependencies: Sequence[str],
|
||||||
) -> None: # pragma: win32 no cover
|
) -> None: # pragma: win32 no cover
|
||||||
helpers.assert_version_default('swift', version)
|
lang_base.assert_version_default('swift', version)
|
||||||
helpers.assert_no_additional_deps('swift', additional_dependencies)
|
lang_base.assert_no_additional_deps('swift', additional_dependencies)
|
||||||
envdir = helpers.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
envdir = lang_base.environment_dir(prefix, ENVIRONMENT_DIR, version)
|
||||||
|
|
||||||
# Build the swift package
|
# Build the swift package
|
||||||
os.mkdir(envdir)
|
os.mkdir(envdir)
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from pre_commit.languages import helpers
|
from pre_commit import lang_base
|
||||||
|
|
||||||
ENVIRONMENT_DIR = None
|
ENVIRONMENT_DIR = None
|
||||||
get_default_version = helpers.basic_get_default_version
|
get_default_version = lang_base.basic_get_default_version
|
||||||
health_check = helpers.basic_health_check
|
health_check = lang_base.basic_health_check
|
||||||
install_environment = helpers.no_install
|
install_environment = lang_base.no_install
|
||||||
in_env = helpers.no_env
|
in_env = lang_base.no_env
|
||||||
run_hook = helpers.basic_run_hook
|
run_hook = lang_base.basic_run_hook
|
||||||
|
|
|
||||||
|
|
@ -8,13 +8,13 @@ from typing import Any
|
||||||
from typing import Sequence
|
from typing import Sequence
|
||||||
|
|
||||||
import pre_commit.constants as C
|
import pre_commit.constants as C
|
||||||
|
from pre_commit.all_languages import languages
|
||||||
from pre_commit.clientlib import load_manifest
|
from pre_commit.clientlib import load_manifest
|
||||||
from pre_commit.clientlib import LOCAL
|
from pre_commit.clientlib import LOCAL
|
||||||
from pre_commit.clientlib import META
|
from pre_commit.clientlib import META
|
||||||
from pre_commit.clientlib import parse_version
|
from pre_commit.clientlib import parse_version
|
||||||
from pre_commit.hook import Hook
|
from pre_commit.hook import Hook
|
||||||
from pre_commit.languages.all import languages
|
from pre_commit.lang_base import environment_dir
|
||||||
from pre_commit.languages.helpers import environment_dir
|
|
||||||
from pre_commit.prefix import Prefix
|
from pre_commit.prefix import Prefix
|
||||||
from pre_commit.store import Store
|
from pre_commit.store import Store
|
||||||
from pre_commit.util import clean_path_on_failure
|
from pre_commit.util import clean_path_on_failure
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ from __future__ import annotations
|
||||||
import os
|
import os
|
||||||
from typing import Sequence
|
from typing import Sequence
|
||||||
|
|
||||||
from pre_commit.languages.all import Language
|
from pre_commit.lang_base import Language
|
||||||
from pre_commit.prefix import Prefix
|
from pre_commit.prefix import Prefix
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from pre_commit.languages.all import languages
|
from pre_commit.all_languages import languages
|
||||||
|
|
||||||
|
|
||||||
def test_python_venv_is_an_alias_to_python():
|
def test_python_venv_is_an_alias_to_python():
|
||||||
|
|
@ -8,8 +8,8 @@ from unittest import mock
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
import pre_commit.constants as C
|
import pre_commit.constants as C
|
||||||
|
from pre_commit import lang_base
|
||||||
from pre_commit import parse_shebang
|
from pre_commit import parse_shebang
|
||||||
from pre_commit.languages import helpers
|
|
||||||
from pre_commit.prefix import Prefix
|
from pre_commit.prefix import Prefix
|
||||||
from pre_commit.util import CalledProcessError
|
from pre_commit.util import CalledProcessError
|
||||||
|
|
||||||
|
|
@ -32,42 +32,42 @@ def homedir_mck():
|
||||||
|
|
||||||
def test_exe_exists_does_not_exist(find_exe_mck, homedir_mck):
|
def test_exe_exists_does_not_exist(find_exe_mck, homedir_mck):
|
||||||
find_exe_mck.return_value = None
|
find_exe_mck.return_value = None
|
||||||
assert helpers.exe_exists('ruby') is False
|
assert lang_base.exe_exists('ruby') is False
|
||||||
|
|
||||||
|
|
||||||
def test_exe_exists_exists(find_exe_mck, homedir_mck):
|
def test_exe_exists_exists(find_exe_mck, homedir_mck):
|
||||||
find_exe_mck.return_value = os.path.normpath('/usr/bin/ruby')
|
find_exe_mck.return_value = os.path.normpath('/usr/bin/ruby')
|
||||||
assert helpers.exe_exists('ruby') is True
|
assert lang_base.exe_exists('ruby') is True
|
||||||
|
|
||||||
|
|
||||||
def test_exe_exists_false_if_shim(find_exe_mck, homedir_mck):
|
def test_exe_exists_false_if_shim(find_exe_mck, homedir_mck):
|
||||||
find_exe_mck.return_value = os.path.normpath('/foo/shims/ruby')
|
find_exe_mck.return_value = os.path.normpath('/foo/shims/ruby')
|
||||||
assert helpers.exe_exists('ruby') is False
|
assert lang_base.exe_exists('ruby') is False
|
||||||
|
|
||||||
|
|
||||||
def test_exe_exists_false_if_homedir(find_exe_mck, homedir_mck):
|
def test_exe_exists_false_if_homedir(find_exe_mck, homedir_mck):
|
||||||
find_exe_mck.return_value = os.path.normpath('/home/me/somedir/ruby')
|
find_exe_mck.return_value = os.path.normpath('/home/me/somedir/ruby')
|
||||||
assert helpers.exe_exists('ruby') is False
|
assert lang_base.exe_exists('ruby') is False
|
||||||
|
|
||||||
|
|
||||||
def test_exe_exists_commonpath_raises_ValueError(find_exe_mck, homedir_mck):
|
def test_exe_exists_commonpath_raises_ValueError(find_exe_mck, homedir_mck):
|
||||||
find_exe_mck.return_value = os.path.normpath('/usr/bin/ruby')
|
find_exe_mck.return_value = os.path.normpath('/usr/bin/ruby')
|
||||||
with mock.patch.object(os.path, 'commonpath', side_effect=ValueError):
|
with mock.patch.object(os.path, 'commonpath', side_effect=ValueError):
|
||||||
assert helpers.exe_exists('ruby') is True
|
assert lang_base.exe_exists('ruby') is True
|
||||||
|
|
||||||
|
|
||||||
def test_exe_exists_true_when_homedir_is_slash(find_exe_mck):
|
def test_exe_exists_true_when_homedir_is_slash(find_exe_mck):
|
||||||
find_exe_mck.return_value = os.path.normpath('/usr/bin/ruby')
|
find_exe_mck.return_value = os.path.normpath('/usr/bin/ruby')
|
||||||
with mock.patch.object(os.path, 'expanduser', return_value=os.sep):
|
with mock.patch.object(os.path, 'expanduser', return_value=os.sep):
|
||||||
assert helpers.exe_exists('ruby') is True
|
assert lang_base.exe_exists('ruby') is True
|
||||||
|
|
||||||
|
|
||||||
def test_basic_get_default_version():
|
def test_basic_get_default_version():
|
||||||
assert helpers.basic_get_default_version() == C.DEFAULT
|
assert lang_base.basic_get_default_version() == C.DEFAULT
|
||||||
|
|
||||||
|
|
||||||
def test_basic_health_check():
|
def test_basic_health_check():
|
||||||
assert helpers.basic_health_check(Prefix('.'), 'default') is None
|
assert lang_base.basic_health_check(Prefix('.'), 'default') is None
|
||||||
|
|
||||||
|
|
||||||
def test_failed_setup_command_does_not_unicode_error():
|
def test_failed_setup_command_does_not_unicode_error():
|
||||||
|
|
@ -79,12 +79,12 @@ def test_failed_setup_command_does_not_unicode_error():
|
||||||
|
|
||||||
# an assertion that this does not raise `UnicodeError`
|
# an assertion that this does not raise `UnicodeError`
|
||||||
with pytest.raises(CalledProcessError):
|
with pytest.raises(CalledProcessError):
|
||||||
helpers.run_setup_cmd(Prefix('.'), (sys.executable, '-c', script))
|
lang_base.setup_cmd(Prefix('.'), (sys.executable, '-c', script))
|
||||||
|
|
||||||
|
|
||||||
def test_assert_no_additional_deps():
|
def test_assert_no_additional_deps():
|
||||||
with pytest.raises(AssertionError) as excinfo:
|
with pytest.raises(AssertionError) as excinfo:
|
||||||
helpers.assert_no_additional_deps('lang', ['hmmm'])
|
lang_base.assert_no_additional_deps('lang', ['hmmm'])
|
||||||
msg, = excinfo.value.args
|
msg, = excinfo.value.args
|
||||||
assert msg == (
|
assert msg == (
|
||||||
'for now, pre-commit does not support additional_dependencies for '
|
'for now, pre-commit does not support additional_dependencies for '
|
||||||
|
|
@ -96,19 +96,19 @@ def test_assert_no_additional_deps():
|
||||||
def test_target_concurrency_normal():
|
def test_target_concurrency_normal():
|
||||||
with mock.patch.object(multiprocessing, 'cpu_count', return_value=123):
|
with mock.patch.object(multiprocessing, 'cpu_count', return_value=123):
|
||||||
with mock.patch.dict(os.environ, {}, clear=True):
|
with mock.patch.dict(os.environ, {}, clear=True):
|
||||||
assert helpers.target_concurrency() == 123
|
assert lang_base.target_concurrency() == 123
|
||||||
|
|
||||||
|
|
||||||
def test_target_concurrency_testing_env_var():
|
def test_target_concurrency_testing_env_var():
|
||||||
with mock.patch.dict(
|
with mock.patch.dict(
|
||||||
os.environ, {'PRE_COMMIT_NO_CONCURRENCY': '1'}, clear=True,
|
os.environ, {'PRE_COMMIT_NO_CONCURRENCY': '1'}, clear=True,
|
||||||
):
|
):
|
||||||
assert helpers.target_concurrency() == 1
|
assert lang_base.target_concurrency() == 1
|
||||||
|
|
||||||
|
|
||||||
def test_target_concurrency_on_travis():
|
def test_target_concurrency_on_travis():
|
||||||
with mock.patch.dict(os.environ, {'TRAVIS': '1'}, clear=True):
|
with mock.patch.dict(os.environ, {'TRAVIS': '1'}, clear=True):
|
||||||
assert helpers.target_concurrency() == 2
|
assert lang_base.target_concurrency() == 2
|
||||||
|
|
||||||
|
|
||||||
def test_target_concurrency_cpu_count_not_implemented():
|
def test_target_concurrency_cpu_count_not_implemented():
|
||||||
|
|
@ -116,17 +116,17 @@ def test_target_concurrency_cpu_count_not_implemented():
|
||||||
multiprocessing, 'cpu_count', side_effect=NotImplementedError,
|
multiprocessing, 'cpu_count', side_effect=NotImplementedError,
|
||||||
):
|
):
|
||||||
with mock.patch.dict(os.environ, {}, clear=True):
|
with mock.patch.dict(os.environ, {}, clear=True):
|
||||||
assert helpers.target_concurrency() == 1
|
assert lang_base.target_concurrency() == 1
|
||||||
|
|
||||||
|
|
||||||
def test_shuffled_is_deterministic():
|
def test_shuffled_is_deterministic():
|
||||||
seq = [str(i) for i in range(10)]
|
seq = [str(i) for i in range(10)]
|
||||||
expected = ['4', '0', '5', '1', '8', '6', '2', '3', '7', '9']
|
expected = ['4', '0', '5', '1', '8', '6', '2', '3', '7', '9']
|
||||||
assert helpers._shuffled(seq) == expected
|
assert lang_base._shuffled(seq) == expected
|
||||||
|
|
||||||
|
|
||||||
def test_xargs_require_serial_is_not_shuffled():
|
def test_xargs_require_serial_is_not_shuffled():
|
||||||
ret, out = helpers.run_xargs(
|
ret, out = lang_base.run_xargs(
|
||||||
('echo',), [str(i) for i in range(10)],
|
('echo',), [str(i) for i in range(10)],
|
||||||
require_serial=True,
|
require_serial=True,
|
||||||
color=False,
|
color=False,
|
||||||
|
|
@ -6,9 +6,9 @@ import pytest
|
||||||
import re_assert
|
import re_assert
|
||||||
|
|
||||||
import pre_commit.constants as C
|
import pre_commit.constants as C
|
||||||
|
from pre_commit import lang_base
|
||||||
from pre_commit.envcontext import envcontext
|
from pre_commit.envcontext import envcontext
|
||||||
from pre_commit.languages import golang
|
from pre_commit.languages import golang
|
||||||
from pre_commit.languages import helpers
|
|
||||||
from pre_commit.store import _make_local_repo
|
from pre_commit.store import _make_local_repo
|
||||||
from testing.language_helpers import run_language
|
from testing.language_helpers import run_language
|
||||||
|
|
||||||
|
|
@ -18,7 +18,7 @@ ACTUAL_GET_DEFAULT_VERSION = golang.get_default_version.__wrapped__
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def exe_exists_mck():
|
def exe_exists_mck():
|
||||||
with mock.patch.object(helpers, 'exe_exists') as mck:
|
with mock.patch.object(lang_base, 'exe_exists') as mck:
|
||||||
yield mck
|
yield mck
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,12 +10,12 @@ import pytest
|
||||||
import re_assert
|
import re_assert
|
||||||
|
|
||||||
import pre_commit.constants as C
|
import pre_commit.constants as C
|
||||||
|
from pre_commit import lang_base
|
||||||
|
from pre_commit.all_languages import languages
|
||||||
from pre_commit.clientlib import CONFIG_SCHEMA
|
from pre_commit.clientlib import CONFIG_SCHEMA
|
||||||
from pre_commit.clientlib import load_manifest
|
from pre_commit.clientlib import load_manifest
|
||||||
from pre_commit.hook import Hook
|
from pre_commit.hook import Hook
|
||||||
from pre_commit.languages import helpers
|
|
||||||
from pre_commit.languages import python
|
from pre_commit.languages import python
|
||||||
from pre_commit.languages.all import languages
|
|
||||||
from pre_commit.prefix import Prefix
|
from pre_commit.prefix import Prefix
|
||||||
from pre_commit.repository import _hook_installed
|
from pre_commit.repository import _hook_installed
|
||||||
from pre_commit.repository import all_hooks
|
from pre_commit.repository import all_hooks
|
||||||
|
|
@ -275,7 +275,7 @@ def test_repository_state_compatibility(tempdir_factory, store, v):
|
||||||
|
|
||||||
config = make_config_from_repo(path)
|
config = make_config_from_repo(path)
|
||||||
hook = _get_hook(config, store, 'foo')
|
hook = _get_hook(config, store, 'foo')
|
||||||
envdir = helpers.environment_dir(
|
envdir = lang_base.environment_dir(
|
||||||
hook.prefix,
|
hook.prefix,
|
||||||
python.ENVIRONMENT_DIR,
|
python.ENVIRONMENT_DIR,
|
||||||
hook.language_version,
|
hook.language_version,
|
||||||
|
|
@ -327,7 +327,7 @@ def test_control_c_control_c_on_install(tempdir_factory, store):
|
||||||
# raise as well.
|
# raise as well.
|
||||||
with pytest.raises(MyKeyboardInterrupt):
|
with pytest.raises(MyKeyboardInterrupt):
|
||||||
with mock.patch.object(
|
with mock.patch.object(
|
||||||
helpers, 'run_setup_cmd', side_effect=MyKeyboardInterrupt,
|
lang_base, 'setup_cmd', side_effect=MyKeyboardInterrupt,
|
||||||
):
|
):
|
||||||
with mock.patch.object(
|
with mock.patch.object(
|
||||||
shutil, 'rmtree', side_effect=MyKeyboardInterrupt,
|
shutil, 'rmtree', side_effect=MyKeyboardInterrupt,
|
||||||
|
|
@ -336,7 +336,7 @@ def test_control_c_control_c_on_install(tempdir_factory, store):
|
||||||
|
|
||||||
# Should have made an environment, however this environment is broken!
|
# Should have made an environment, however this environment is broken!
|
||||||
hook, = hooks
|
hook, = hooks
|
||||||
envdir = helpers.environment_dir(
|
envdir = lang_base.environment_dir(
|
||||||
hook.prefix,
|
hook.prefix,
|
||||||
python.ENVIRONMENT_DIR,
|
python.ENVIRONMENT_DIR,
|
||||||
hook.language_version,
|
hook.language_version,
|
||||||
|
|
@ -359,7 +359,7 @@ def test_invalidated_virtualenv(tempdir_factory, store):
|
||||||
hook = _get_hook(config, store, 'foo')
|
hook = _get_hook(config, store, 'foo')
|
||||||
|
|
||||||
# Simulate breaking of the virtualenv
|
# Simulate breaking of the virtualenv
|
||||||
envdir = helpers.environment_dir(
|
envdir = lang_base.environment_dir(
|
||||||
hook.prefix,
|
hook.prefix,
|
||||||
python.ENVIRONMENT_DIR,
|
python.ENVIRONMENT_DIR,
|
||||||
hook.language_version,
|
hook.language_version,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue