summaryrefslogtreecommitdiffstats
path: root/pre_commit/languages/lua.py
diff options
context:
space:
mode:
Diffstat (limited to 'pre_commit/languages/lua.py')
-rw-r--r--pre_commit/languages/lua.py56
1 files changed, 20 insertions, 36 deletions
diff --git a/pre_commit/languages/lua.py b/pre_commit/languages/lua.py
index 49aa730..ffc40b5 100644
--- a/pre_commit/languages/lua.py
+++ b/pre_commit/languages/lua.py
@@ -6,19 +6,17 @@ import sys
from typing import Generator
from typing import Sequence
-import pre_commit.constants as C
from pre_commit.envcontext import envcontext
from pre_commit.envcontext import PatchesT
from pre_commit.envcontext import Var
-from pre_commit.hook import Hook
from pre_commit.languages import helpers
from pre_commit.prefix import Prefix
-from pre_commit.util import clean_path_on_failure
from pre_commit.util import cmd_output
ENVIRONMENT_DIR = 'lua_env'
get_default_version = helpers.basic_get_default_version
health_check = helpers.basic_health_check
+run_hook = helpers.basic_run_hook
def _get_lua_version() -> str: # pragma: win32 no cover
@@ -45,14 +43,10 @@ def get_env_patch(d: str) -> PatchesT: # pragma: win32 no cover
)
-def _envdir(prefix: Prefix) -> str: # pragma: win32 no cover
- directory = helpers.environment_dir(ENVIRONMENT_DIR, C.DEFAULT)
- return prefix.path(directory)
-
-
@contextlib.contextmanager # pragma: win32 no cover
-def in_env(prefix: Prefix) -> Generator[None, None, None]:
- with envcontext(get_env_patch(_envdir(prefix))):
+def in_env(prefix: Prefix, version: str) -> Generator[None, None, None]:
+ envdir = helpers.environment_dir(prefix, ENVIRONMENT_DIR, version)
+ with envcontext(get_env_patch(envdir)):
yield
@@ -63,29 +57,19 @@ def install_environment(
) -> None: # pragma: win32 no cover
helpers.assert_version_default('lua', version)
- envdir = _envdir(prefix)
- with clean_path_on_failure(envdir):
- with in_env(prefix):
- # luarocks doesn't bootstrap a tree prior to installing
- # so ensure the directory exists.
- os.makedirs(envdir, exist_ok=True)
-
- # Older luarocks (e.g., 2.4.2) expect the rockspec as an arg
- for rockspec in prefix.star('.rockspec'):
- make_cmd = ('luarocks', '--tree', envdir, 'make', rockspec)
- helpers.run_setup_cmd(prefix, make_cmd)
-
- # luarocks can't install multiple packages at once
- # so install them individually.
- for dependency in additional_dependencies:
- cmd = ('luarocks', '--tree', envdir, 'install', dependency)
- helpers.run_setup_cmd(prefix, cmd)
-
-
-def run_hook(
- hook: Hook,
- file_args: Sequence[str],
- color: bool,
-) -> tuple[int, bytes]: # pragma: win32 no cover
- with in_env(hook.prefix):
- return helpers.run_xargs(hook, hook.cmd, file_args, color=color)
+ envdir = helpers.environment_dir(prefix, ENVIRONMENT_DIR, version)
+ with in_env(prefix, version):
+ # luarocks doesn't bootstrap a tree prior to installing
+ # so ensure the directory exists.
+ os.makedirs(envdir, exist_ok=True)
+
+ # Older luarocks (e.g., 2.4.2) expect the rockspec as an arg
+ for rockspec in prefix.star('.rockspec'):
+ make_cmd = ('luarocks', '--tree', envdir, 'make', rockspec)
+ helpers.run_setup_cmd(prefix, make_cmd)
+
+ # luarocks can't install multiple packages at once
+ # so install them individually.
+ for dependency in additional_dependencies:
+ cmd = ('luarocks', '--tree', envdir, 'install', dependency)
+ helpers.run_setup_cmd(prefix, cmd)