mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-20 18:53:47 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			54 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/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()
 |