summaryrefslogtreecommitdiffstats
path: root/pre_commit/languages/conda.py
diff options
context:
space:
mode:
Diffstat (limited to 'pre_commit/languages/conda.py')
-rw-r--r--pre_commit/languages/conda.py42
1 files changed, 11 insertions, 31 deletions
diff --git a/pre_commit/languages/conda.py b/pre_commit/languages/conda.py
index f0195e4..e2fb019 100644
--- a/pre_commit/languages/conda.py
+++ b/pre_commit/languages/conda.py
@@ -10,15 +10,14 @@ from pre_commit.envcontext import PatchesT
from pre_commit.envcontext import SubstitutionT
from pre_commit.envcontext import UNSET
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_b
ENVIRONMENT_DIR = 'conda'
get_default_version = helpers.basic_get_default_version
health_check = helpers.basic_health_check
+run_hook = helpers.basic_run_hook
def get_env_patch(env: str) -> PatchesT:
@@ -41,12 +40,8 @@ def get_env_patch(env: str) -> PatchesT:
@contextlib.contextmanager
-def in_env(
- prefix: Prefix,
- language_version: str,
-) -> Generator[None, None, None]:
- directory = helpers.environment_dir(ENVIRONMENT_DIR, language_version)
- envdir = prefix.path(directory)
+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
@@ -66,31 +61,16 @@ def install_environment(
additional_dependencies: Sequence[str],
) -> None:
helpers.assert_version_default('conda', version)
- directory = helpers.environment_dir(ENVIRONMENT_DIR, version)
conda_exe = _conda_exe()
- env_dir = prefix.path(directory)
- with clean_path_on_failure(env_dir):
+ env_dir = helpers.environment_dir(prefix, ENVIRONMENT_DIR, version)
+ cmd_output_b(
+ conda_exe, 'env', 'create', '-p', env_dir, '--file',
+ 'environment.yml', cwd=prefix.prefix_dir,
+ )
+ if additional_dependencies:
cmd_output_b(
- conda_exe, 'env', 'create', '-p', env_dir, '--file',
- 'environment.yml', cwd=prefix.prefix_dir,
+ conda_exe, 'install', '-p', env_dir, *additional_dependencies,
+ cwd=prefix.prefix_dir,
)
- if additional_dependencies:
- cmd_output_b(
- conda_exe, 'install', '-p', env_dir, *additional_dependencies,
- cwd=prefix.prefix_dir,
- )
-
-
-def run_hook(
- hook: Hook,
- file_args: Sequence[str],
- color: bool,
-) -> tuple[int, bytes]:
- # TODO: Some rare commands need to be run using `conda run` but mostly we
- # can run them without which is much quicker and produces a better
- # output.
- # cmd = ('conda', 'run', '-p', env_dir) + hook.cmd
- with in_env(hook.prefix, hook.language_version):
- return helpers.run_xargs(hook, hook.cmd, file_args, color=color)