Support checking versoins from Android SDK
This commit is contained in:
parent
3083ef6a1f
commit
02601c0b58
|
@ -11,7 +11,7 @@ handler_precedence = (
|
||||||
'gems', 'pacman',
|
'gems', 'pacman',
|
||||||
'cmd', 'bitbucket', 'regex', 'manual', 'vcs',
|
'cmd', 'bitbucket', 'regex', 'manual', 'vcs',
|
||||||
'cratesio', 'npm', 'hackage', 'cpan', 'gitlab', 'packagist',
|
'cratesio', 'npm', 'hackage', 'cpan', 'gitlab', 'packagist',
|
||||||
'anitya',
|
'anitya', 'android_sdk',
|
||||||
)
|
)
|
||||||
|
|
||||||
def substitute_version(version, name, conf):
|
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