Support checking versoins from Android SDK
This commit is contained in:
parent
3083ef6a1f
commit
02601c0b58
|
@ -11,7 +11,7 @@ handler_precedence = (
|
|||
'gems', 'pacman',
|
||||
'cmd', 'bitbucket', 'regex', 'manual', 'vcs',
|
||||
'cratesio', 'npm', 'hackage', 'cpan', 'gitlab', 'packagist',
|
||||
'anitya',
|
||||
'anitya', 'android_sdk',
|
||||
)
|
||||
|
||||
def substitute_version(version, name, conf):
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
# MIT licensed
|
||||
# Copyright (c) 2013-2017 lilydjwg <lilydjwg@gmail.com>, et al.
|
||||
|
||||
import os
|
||||
import re
|
||||
from xml.etree import ElementTree
|
||||
|
||||
from . import session
|
||||
|
||||
ANDROID_REPO_MANIFESTS = {
|
||||
'addon': 'https://dl.google.com/android/repository/addon2-1.xml',
|
||||
'package': 'https://dl.google.com/android/repository/repository2-1.xml',
|
||||
}
|
||||
|
||||
async def get_version(name, conf):
|
||||
repo_xml_url = ANDROID_REPO_MANIFESTS[conf['repo']]
|
||||
pkg_path_prefix = conf['android_sdk']
|
||||
|
||||
async with session.get(repo_xml_url) as res:
|
||||
data = (await res.read()).decode('utf-8')
|
||||
|
||||
repo_manifest = ElementTree.fromstring(data)
|
||||
for pkg in repo_manifest.findall('.//remotePackage'):
|
||||
if not pkg.attrib['path'].startswith(pkg_path_prefix):
|
||||
continue
|
||||
for archive in pkg.findall('./archives/archive'):
|
||||
host_os = archive.find('./host-os')
|
||||
if host_os and host_os.text != 'linux':
|
||||
continue
|
||||
archive_url = archive.find('./complete/url').text
|
||||
# revision
|
||||
rev = pkg.find('./revision')
|
||||
rev_strs = []
|
||||
for part in ('major', 'minor', 'micro'):
|
||||
part_node = rev.find('./' + part)
|
||||
if part_node is not None:
|
||||
rev_strs.append(part_node.text)
|
||||
# release number
|
||||
filename, ext = os.path.splitext(archive_url)
|
||||
rel_str = filename.rsplit('-')[-1]
|
||||
mobj = re.match(r'r\d+', rel_str)
|
||||
if mobj:
|
||||
rev_strs.append(rel_str)
|
||||
return '.'.join(rev_strs)
|
Loading…
Reference in New Issue