33 lines
725 B
Python
33 lines
725 B
Python
|
import glob
|
||
|
import os
|
||
|
import subprocess
|
||
|
import traceback
|
||
|
|
||
|
from contextlib import contextmanager
|
||
|
|
||
|
@contextmanager
|
||
|
def pushd(new_dir):
|
||
|
previous_dir = os.getcwd()
|
||
|
os.chdir(new_dir)
|
||
|
try:
|
||
|
yield
|
||
|
finally:
|
||
|
os.chdir(previous_dir)
|
||
|
|
||
|
|
||
|
def removeall(dir):
|
||
|
[os.remove(f) for f in glob.iglob("{}/*".format(dir), recursive=True)]
|
||
|
os.removedirs(dir)
|
||
|
|
||
|
|
||
|
def shellish(func):
|
||
|
def shellfunc(*args, **kwargs):
|
||
|
try:
|
||
|
func(*args, **kwargs)
|
||
|
except subprocess.CalledProcessError as err:
|
||
|
print()
|
||
|
print(f"ERROR (code {err.returncode}): The following command failed:")
|
||
|
print(" ".join(err.cmd))
|
||
|
exit(err.returncode)
|
||
|
return shellfunc
|