mirror of
https://github.com/clearml/clearml
synced 2025-02-01 09:36:49 +00:00
36 lines
1.1 KiB
Python
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
|