Support some Mercurial hosts
This will need updating from the hardcoded list at some point.
This commit is contained in:
parent
bb152b2112
commit
51c58c1899
|
@ -35,9 +35,11 @@ def repos_from_metadata(pkg):
|
||||||
remotes.append(('pypi', remote[1]))
|
remotes.append(('pypi', remote[1]))
|
||||||
return remotes
|
return remotes
|
||||||
|
|
||||||
def repo_from_egit_uri(pkg):
|
def repo_from_repo_uri(pkg):
|
||||||
if 'EGIT_REPO_URI' in pkg.ebuilds[0].vars:
|
if 'EGIT_REPO_URI' in pkg.ebuilds[0].vars:
|
||||||
return ('git', pkg.ebuilds[0].vars['EGIT_REPO_URI'].replace('${PN}', pkg.name))
|
return ('git', pkg.ebuilds[0].vars['EGIT_REPO_URI'].replace('${PN}', pkg.name))
|
||||||
|
if 'EHG_REPO_URI' in pkg.ebuilds[0].vars:
|
||||||
|
return ('hg', pkg.ebuilds[0].vars['EHG_REPO_URI'].replace('${PN}', pkg.name))
|
||||||
|
|
||||||
def repo_from_src_uri(pkg):
|
def repo_from_src_uri(pkg):
|
||||||
for eb in pkg.ebuilds:
|
for eb in pkg.ebuilds:
|
||||||
|
@ -52,7 +54,7 @@ def repo_from_homepage(pkg):
|
||||||
def repos_from_pkg(pkg):
|
def repos_from_pkg(pkg):
|
||||||
repos = []
|
repos = []
|
||||||
repos += repos_from_metadata(pkg)
|
repos += repos_from_metadata(pkg)
|
||||||
repos.append(repo_from_egit_uri(pkg))
|
repos.append(repo_from_repo_uri(pkg))
|
||||||
repos.append(repo_from_src_uri(pkg))
|
repos.append(repo_from_src_uri(pkg))
|
||||||
repos.append(repo_from_homepage(pkg))
|
repos.append(repo_from_homepage(pkg))
|
||||||
return [repo for repo in repos if repo != None]
|
return [repo for repo in repos if repo != None]
|
||||||
|
@ -91,6 +93,28 @@ def repo_get_latest_git(uri, pkg, verbose):
|
||||||
return None
|
return None
|
||||||
return latest
|
return latest
|
||||||
|
|
||||||
|
def repo_get_latest_hg(uri, pkg, verbose):
|
||||||
|
global blacklisted_tags
|
||||||
|
forges = [
|
||||||
|
('https://hg.sr.ht/', '/raw/'),
|
||||||
|
]
|
||||||
|
raw_path = '/raw-file/tip/'
|
||||||
|
for forge in forges:
|
||||||
|
if uri.startswith(forge[0]):
|
||||||
|
raw_path = forge[1]
|
||||||
|
try:
|
||||||
|
r = urllib.request.urlopen(uri+raw_path+'.hgtags')
|
||||||
|
except urllib.error.HTTPError:
|
||||||
|
if verbose:
|
||||||
|
print(pkg.full_name+':', 'Invalid repo!', uri)
|
||||||
|
return None
|
||||||
|
for line in r.read().decode('utf-8').split("\n"):
|
||||||
|
tag = line[41:]
|
||||||
|
if line[:40] in blacklisted_tags or tag in blacklisted_tags:
|
||||||
|
continue
|
||||||
|
latest = tag
|
||||||
|
return latest
|
||||||
|
|
||||||
def repo_get_latest_pypi(uri, pkg, verbose):
|
def repo_get_latest_pypi(uri, pkg, verbose):
|
||||||
try:
|
try:
|
||||||
r = urllib.request.urlopen('https://pypi.org/pypi/'+uri+'/json')
|
r = urllib.request.urlopen('https://pypi.org/pypi/'+uri+'/json')
|
||||||
|
@ -103,6 +127,8 @@ def repo_get_latest_pypi(uri, pkg, verbose):
|
||||||
def repo_get_latest(repo, pkg, verbose):
|
def repo_get_latest(repo, pkg, verbose):
|
||||||
if repo[0] == 'git':
|
if repo[0] == 'git':
|
||||||
return repo_get_latest_git(repo[1], pkg, verbose)
|
return repo_get_latest_git(repo[1], pkg, verbose)
|
||||||
|
if repo[0] == 'hg':
|
||||||
|
return repo_get_latest_hg(repo[1], pkg, verbose)
|
||||||
if repo[0] == 'pypi':
|
if repo[0] == 'pypi':
|
||||||
return repo_get_latest_pypi(repo[1], pkg, verbose)
|
return repo_get_latest_pypi(repo[1], pkg, verbose)
|
||||||
return None
|
return None
|
||||||
|
|
Loading…
Reference in New Issue