Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_valid_href(fields):
"""Test the various repo regexes."""
fields.pop('protocols', None)
assert GitURL(**fields) == GitURL.parse(fields['href'])
remote_name=remote_name
)
try:
registry_url = config.get_value(
config_section, 'registry', registry_url
)
except NoSectionError:
pass
remote_url = repo.remotes[remote_name].url
if registry_url:
# Look in [renku] and [renku "{remote_name}"] for registry_url key.
url = GitURL.parse(registry_url)
elif remote_url:
# Use URL based on remote configuration.
url = GitURL.parse(remote_url)
# Replace gitlab. with registry. unless running on gitlab.com.
hostname_parts = url.hostname.split('.')
if len(hostname_parts) > 2 and hostname_parts[0] == 'gitlab':
hostname_parts = hostname_parts[1:]
hostname = '.'.join(['registry'] + hostname_parts)
url = attr.evolve(url, hostname=hostname)
else:
raise errors.ConfigurationError(
'Configure renku.repository_url or Git remote.'
)
if auto_login and url.username and url.password:
try:
subprocess.run([
'docker',
def remote(self, remote_name='origin'):
"""Return host, owner and name of the remote if it exists."""
from renku.core.models.git import GitURL
host = owner = name = None
try:
remote_branch = \
self.repo.head.reference.tracking_branch()
if remote_branch is not None:
remote_name = remote_branch.remote_name
except TypeError:
pass
try:
url = GitURL.parse(self.repo.remotes[remote_name].url)
# Remove gitlab. unless running on gitlab.com.
hostname_parts = url.hostname.split('.')
if len(hostname_parts) > 2 and hostname_parts[0] == 'gitlab':
hostname_parts = hostname_parts[1:]
url = attr.evolve(url, hostname='.'.join(hostname_parts))
except IndexError:
url = None
if url:
host = url.hostname
owner = url.owner
name = url.name
return {'host': host, 'owner': owner, 'name': name}
if remote_branch is not None:
remote_name = remote_branch.remote_name
config_section = 'renku "{remote_name}"'.format(
remote_name=remote_name
)
try:
registry_url = config.get_value(
config_section, 'registry', registry_url
)
except NoSectionError:
pass
remote_url = repo.remotes[remote_name].url
if registry_url:
# Look in [renku] and [renku "{remote_name}"] for registry_url key.
url = GitURL.parse(registry_url)
elif remote_url:
# Use URL based on remote configuration.
url = GitURL.parse(remote_url)
# Replace gitlab. with registry. unless running on gitlab.com.
hostname_parts = url.hostname.split('.')
if len(hostname_parts) > 2 and hostname_parts[0] == 'gitlab':
hostname_parts = hostname_parts[1:]
hostname = '.'.join(['registry'] + hostname_parts)
url = attr.evolve(url, hostname=hostname)
else:
raise errors.ConfigurationError(
'Configure renku.repository_url or Git remote.'
)
if auto_login and url.username and url.password:
def _prepare_git_repo(self, url, ref):
def checkout(repo, ref):
try:
repo.git.checkout(ref)
except GitCommandError:
raise errors.ParameterError(
'Cannot find reference "{}" in Git repository: {}'.format(
ref, url
)
)
RENKU_BRANCH = 'renku-default-branch'
ref = ref or RENKU_BRANCH
u = GitURL.parse(url)
path = u.pathname
if u.hostname == 'localhost':
path = str(Path(path).resolve())
url = path
repo_name = os.path.splitext(os.path.basename(path))[0]
path = os.path.dirname(path).lstrip('/')
repo_path = self.renku_path / 'cache' / u.hostname / path / repo_name
if repo_path.exists():
repo = Repo(str(repo_path))
if repo.remotes.origin.url == url:
try:
repo.git.fetch(all=True)
repo.git.checkout(ref)
try:
repo.git.pull()
'branch "{}"'.format(self.repo.active_branch.name), 'remote'
)
except NoSectionError:
branch_remote = 'origin'
try:
remote = self.repo.remote(branch_remote)
except ValueError:
warnings.warn(
'Remote {} not found, cannot check for relative URL.'.
format(branch_remote)
)
return url
remote_url = GitURL.parse(remote.url)
submodule_url = GitURL.parse(url)
if remote_url.hostname == submodule_url.hostname:
# construct the relative path
url = Path(
'../../{}'.format(submodule_url.owner) if remote_url.owner ==
submodule_url.owner else '..'
)
url = str(url / submodule_url.name)
return url
branch_remote = self.repo.config_reader().get(
'branch "{}"'.format(self.repo.active_branch.name), 'remote'
)
except NoSectionError:
branch_remote = 'origin'
try:
remote = self.repo.remote(branch_remote)
except ValueError:
warnings.warn(
'Remote {} not found, cannot check for relative URL.'.
format(branch_remote)
)
return url
remote_url = GitURL.parse(remote.url)
submodule_url = GitURL.parse(url)
if remote_url.hostname == submodule_url.hostname:
# construct the relative path
url = Path(
'../../{}'.format(submodule_url.owner) if remote_url.owner ==
submodule_url.owner else '..'
)
url = str(url / submodule_url.name)
return url