mirror of
https://github.com/pre-commit/pre-commit.git
synced 2026-02-17 00:04:42 +04:00
Merge pull request #2671 from pre-commit/simplify-state
simplify install state
This commit is contained in:
commit
978e26c544
2 changed files with 4 additions and 25 deletions
|
|
@ -5,8 +5,6 @@ import importlib.metadata
|
||||||
CONFIG_FILE = '.pre-commit-config.yaml'
|
CONFIG_FILE = '.pre-commit-config.yaml'
|
||||||
MANIFEST_FILE = '.pre-commit-hooks.yaml'
|
MANIFEST_FILE = '.pre-commit-hooks.yaml'
|
||||||
|
|
||||||
# Bump when installation changes in a backwards / forwards incompatible way
|
|
||||||
INSTALLED_STATE_VERSION = '1'
|
|
||||||
# Bump when modifying `empty_template`
|
# Bump when modifying `empty_template`
|
||||||
LOCAL_REPO_VERSION = '1'
|
LOCAL_REPO_VERSION = '1'
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import json
|
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
@ -23,21 +22,8 @@ from pre_commit.util import rmtree
|
||||||
logger = logging.getLogger('pre_commit')
|
logger = logging.getLogger('pre_commit')
|
||||||
|
|
||||||
|
|
||||||
def _state(additional_deps: Sequence[str]) -> object:
|
|
||||||
return {'additional_dependencies': sorted(additional_deps)}
|
|
||||||
|
|
||||||
|
|
||||||
def _state_filename(venv: str) -> str:
|
def _state_filename(venv: str) -> str:
|
||||||
return os.path.join(venv, f'.install_state_v{C.INSTALLED_STATE_VERSION}')
|
return os.path.join(venv, '.install_state_v2')
|
||||||
|
|
||||||
|
|
||||||
def _read_state(venv: str) -> object | None:
|
|
||||||
filename = _state_filename(venv)
|
|
||||||
if not os.path.exists(filename):
|
|
||||||
return None
|
|
||||||
else:
|
|
||||||
with open(filename) as f:
|
|
||||||
return json.load(f)
|
|
||||||
|
|
||||||
|
|
||||||
def _hook_installed(hook: Hook) -> bool:
|
def _hook_installed(hook: Hook) -> bool:
|
||||||
|
|
@ -51,7 +37,7 @@ def _hook_installed(hook: Hook) -> bool:
|
||||||
hook.language_version,
|
hook.language_version,
|
||||||
)
|
)
|
||||||
return (
|
return (
|
||||||
_read_state(venv) == _state(hook.additional_dependencies) and
|
os.path.exists(_state_filename(venv)) and
|
||||||
not lang.health_check(hook.prefix, hook.language_version)
|
not lang.health_check(hook.prefix, hook.language_version)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -87,13 +73,8 @@ def _hook_install(hook: Hook) -> None:
|
||||||
f'your environment\n\n'
|
f'your environment\n\n'
|
||||||
f'more info:\n\n{health_error}',
|
f'more info:\n\n{health_error}',
|
||||||
)
|
)
|
||||||
# Write our state to indicate we're installed
|
# touch state file to indicate we're installed
|
||||||
state_filename = _state_filename(venv)
|
open(_state_filename(venv), 'a+').close()
|
||||||
staging = f'{state_filename}staging'
|
|
||||||
with open(staging, 'w') as state_file:
|
|
||||||
state_file.write(json.dumps(_state(hook.additional_dependencies)))
|
|
||||||
# Move the file into place atomically to indicate we've installed
|
|
||||||
os.replace(staging, state_filename)
|
|
||||||
|
|
||||||
|
|
||||||
def _hook(
|
def _hook(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue