1
0
mirror of https://gitlab.com/fdroid/fdroidserver.git synced 2024-10-03 17:50:11 +02:00

gradle file: use flavour specific versionCode/versionName, fall back to parsing line by line

This commit is contained in:
tobiasKaminsky 2017-11-29 08:32:55 +01:00
parent 5607ccdc41
commit f8492f05a8
No known key found for this signature in database
GPG Key ID: 0E00D4D47D0C5AF7

View File

@ -1299,27 +1299,56 @@ def parse_androidmanifests(paths, app):
vercode = None
package = None
flavour = app.builds[-1].gradle[-1]
if has_extension(path, 'gradle'):
# first try to get version name and code from correct flavour
with open(path, 'r') as f:
for line in f:
if gradle_comment.match(line):
continue
# Grab first occurence of each to avoid running into
# alternative flavours and builds.
if not package:
matches = psearch_g(line)
if matches:
s = matches.group(2)
if app_matches_packagename(app, s):
package = s
if not version:
matches = vnsearch_g(line)
if matches:
version = matches.group(2)
if not vercode:
matches = vcsearch_g(line)
if matches:
vercode = matches.group(1)
buildfile = f.read()
regex_string = r"" + flavour + ".*?}"
search = re.compile(regex_string, re.DOTALL)
result = search.search(buildfile)
if result is not None:
resultgroup = result.group()
if not package:
matches = psearch_g(resultgroup)
if matches:
s = matches.group(2)
if app_matches_packagename(app, s):
package = s
if not version:
matches = vnsearch_g(resultgroup)
if matches:
version = matches.group(2)
if not vercode:
matches = vcsearch_g(resultgroup)
if matches:
vercode = matches.group(1)
else:
# fall back to parse file line by line
with open(path, 'r') as f:
for line in f:
if gradle_comment.match(line):
continue
# Grab first occurence of each to avoid running into
# alternative flavours and builds.
if not package:
matches = psearch_g(line)
if matches:
s = matches.group(2)
if app_matches_packagename(app, s):
package = s
if not version:
matches = vnsearch_g(line)
if matches:
version = matches.group(2)
if not vercode:
matches = vcsearch_g(line)
if matches:
vercode = matches.group(1)
else:
try:
xml = parse_xml(path)