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]))
|
||||
return remotes
|
||||
|
||||
def repo_from_egit_uri(pkg):
|
||||
def repo_from_repo_uri(pkg):
|
||||
if 'EGIT_REPO_URI' in pkg.ebuilds[0].vars:
|
||||
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):
|
||||
for eb in pkg.ebuilds:
|
||||
|
@ -52,7 +54,7 @@ def repo_from_homepage(pkg):
|
|||
def repos_from_pkg(pkg):
|
||||
repos = []
|
||||
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_homepage(pkg))
|
||||
return [repo for repo in repos if repo != None]
|
||||
|
@ -91,6 +93,28 @@ def repo_get_latest_git(uri, pkg, verbose):
|
|||
return None
|
||||
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):
|
||||
try:
|
||||
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):
|
||||
if repo[0] == 'git':
|
||||
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':
|
||||
return repo_get_latest_pypi(repo[1], pkg, verbose)
|
||||
return None
|
||||
|
|
Loading…
Reference in New Issue