Skip to content

Commit

Permalink
Fix running pre-commit on Windows (esphome#8095)
Browse files Browse the repository at this point in the history
  • Loading branch information
stellar-aria authored Jan 16, 2025
1 parent 49c01c2 commit 16bf56b
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 15 deletions.
4 changes: 2 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,6 @@ repos:
hooks:
- id: pylint
name: pylint
entry: script/run-in-env.sh pylint
language: script
entry: python script/run-in-env pylint
language: system
types: [python]
53 changes: 53 additions & 0 deletions script/run-in-env
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
#!/usr/bin/env python3

import os
from pathlib import Path
import subprocess
import sys


def find_and_activate_virtualenv():
try:
# Get the top-level directory of the git repository
my_path = subprocess.check_output(
["git", "rev-parse", "--show-toplevel"], text=True
).strip()
except subprocess.CalledProcessError:
print(
"Error: Not a git repository or unable to determine the top-level directory.",
file=sys.stderr,
)
sys.exit(1)

# Check for virtual environments
for venv in ["venv", ".venv", "."]:
activate_path = (
Path(my_path)
/ venv
/ ("Scripts" if os.name == "nt" else "bin")
/ "activate"
)
if activate_path.exists():
# Activate the virtual environment by updating PATH
env = os.environ.copy()
venv_bin_dir = activate_path.parent
env["PATH"] = f"{venv_bin_dir}{os.pathsep}{env['PATH']}"
env["VIRTUAL_ENV"] = str(venv_bin_dir.parent)
print(f"Activated virtual environment: {venv_bin_dir.parent}")

# Execute the remaining arguments in the new environment
if len(sys.argv) > 1:
subprocess.run(sys.argv[1:], env=env, check=False)
else:
print(
"No command provided to run in the virtual environment.",
file=sys.stderr,
)
return

print("No virtual environment found.", file=sys.stderr)
sys.exit(1)


if __name__ == "__main__":
find_and_activate_virtualenv()
13 changes: 0 additions & 13 deletions script/run-in-env.sh

This file was deleted.

0 comments on commit 16bf56b

Please sign in to comment.