pre-commit/pre_commit/languages/docker_image.py
2025-11-07 21:55:44 -05:00

41 lines
1.1 KiB
Python

from __future__ import annotations
from collections.abc import Sequence
from pre_commit import lang_base
from pre_commit.languages.docker import docker_cmd
from pre_commit.prefix import Prefix
ENVIRONMENT_DIR = None
get_default_version = lang_base.basic_get_default_version
health_check = lang_base.basic_health_check
install_environment = lang_base.no_install
in_env = lang_base.no_env
def run_hook(
prefix: Prefix,
entry: str,
args: Sequence[str],
file_args: Sequence[str],
*,
is_local: bool,
require_serial: bool,
color: bool,
) -> tuple[int, bytes]: # pragma: win32 no cover
cmd = lang_base.hook_cmd(entry, args)
# To prevent duplicate simultaneous image pull attempts in `run_xargs`, we
# try to precache the Docker image by pulling it here first
try:
image_name = cmd[2 if cmd[0] == '--entrypoint' else 0]
lang_base.setup_cmd(prefix, ('docker', 'pull', image_name))
except Exception:
pass
return lang_base.run_xargs(
docker_cmd(color=color) + cmd,
file_args,
require_serial=require_serial,
color=color,
)