Add venv removal script
This commit is contained in:
parent
005925c6cc
commit
6686c1874c
1 changed files with 68 additions and 0 deletions
68
bin/rmvenv.py
Executable file
68
bin/rmvenv.py
Executable file
|
@ -0,0 +1,68 @@
|
|||
#!/usr/bin/env python3
|
||||
import argparse
|
||||
import shlex
|
||||
import shutil
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
|
||||
parser = argparse.ArgumentParser(
|
||||
prog="Remove venv v1.0.0",
|
||||
formatter_class=argparse.RawTextHelpFormatter,
|
||||
description="Remove all the venv-created files",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--freeze",
|
||||
action="store_true",
|
||||
help="Runs a venv freeze before deleting",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--dir",
|
||||
type=Path,
|
||||
help="Choose directory to remove venv inside",
|
||||
)
|
||||
args = parser.parse_args()
|
||||
|
||||
VENV_BASENAMES = [
|
||||
"1",
|
||||
"bin",
|
||||
"include",
|
||||
"lib",
|
||||
"lib64",
|
||||
"pyvenv.cfg",
|
||||
]
|
||||
|
||||
|
||||
def check_for_venv(directory):
|
||||
global VENV_BASENAMES
|
||||
|
||||
for file in VENV_BASENAMES:
|
||||
if not (directory / file).exists():
|
||||
print(f"Missing file {file}")
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
|
||||
def rm_venv(directory):
|
||||
for file in VENV_BASENAMES:
|
||||
p = directory / file
|
||||
|
||||
if p.is_dir():
|
||||
shutil.rmtree(p)
|
||||
else:
|
||||
p.unlink()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
p = Path().cwd() if args.dir == None else args.dir
|
||||
|
||||
if not check_for_venv(p):
|
||||
print("Not a venv")
|
||||
exit(1)
|
||||
|
||||
if args.freeze:
|
||||
subprocess.run(
|
||||
shlex.split("bash -c '. bin/activate && pip freeze > requirements.txt'")
|
||||
)
|
||||
|
||||
rm_venv(p)
|
Loading…
Reference in a new issue