clearml/trains/backend_interface/task/repo/util.py
2020-10-12 10:52:49 +03:00

36 lines
1.1 KiB
Python

import os
from subprocess import check_output
from furl import furl
def get_command_output(command, path=None, strip=True):
"""
Run a command and return its output
:raises CalledProcessError: when command execution fails
:raises UnicodeDecodeError: when output decoding fails
"""
with open(os.devnull, "wb") as devnull:
result = check_output(command, cwd=path, stderr=devnull).decode()
return result.strip() if strip else result
def remove_user_pass_from_url(url):
# remove user / password, if we have it embedded in the git repo
url = str(url)
# noinspection PyBroadException
try:
url = furl(url).remove(username=True, password=True).tostr()
except ValueError:
# check if for any reason we have two @
# (e.g. ssh://user@abc.com@domain.com/path or ssh://user@abc.com:pass@domain.com/path)
if len(url.split('@')) >= 3:
# noinspection PyBroadException
try:
url = furl(url.replace('@', '_', 1)).remove(username=True, password=True).tostr()
except Exception:
pass
except Exception:
pass
return url