2
0
mirror of https://github.com/frappe/bench.git synced 2024-11-13 16:56:33 +00:00

refactor: bench.utils.exec_cmd

Refactoring the official way to run any commands through bench. Added a
way to pass on envvars, and use the new log API w click ;)
This commit is contained in:
Gavin D'souza 2021-10-30 02:44:00 +05:30
parent ba289fba25
commit 93e5655570

View File

@ -282,14 +282,17 @@ def clone_apps_from(bench_path, clone_from, update_app=True):
setup_app(app)
def exec_cmd(cmd, cwd='.'):
import shlex
print(f"{color.silver}$ {cmd}{color.nc}")
def exec_cmd(cmd, cwd='.', env=None):
if env:
env.update(os.environ.copy())
click.secho(f"$ {cmd}", fg='bright_black')
cwd_info = f"cd {cwd} && " if cwd != "." else ""
cmd_log = f"{cwd_info}{cmd}"
logger.debug(cmd_log)
cmd = shlex.split(cmd)
return_code = subprocess.call(cmd, cwd=cwd, universal_newlines=True)
cmd = split(cmd)
return_code = subprocess.call(cmd, cwd=cwd, universal_newlines=True, env=env)
if return_code:
logger.warning(f"{cmd_log} executed with exit code {return_code}")