From 990321d33d164c5427c3c95184df9544eeebf943 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Thu, 15 Aug 2013 12:15:44 +0200 Subject: [PATCH] Fetch CV @string values at checkupdates --- fdroidserver/checkupdates.py | 9 +++++++-- fdroidserver/common.py | 12 +++++++++++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/fdroidserver/checkupdates.py b/fdroidserver/checkupdates.py index 8b9d0dcc..452a83db 100644 --- a/fdroidserver/checkupdates.py +++ b/fdroidserver/checkupdates.py @@ -300,7 +300,7 @@ def main(): writeit = True logmsg = "Update current version of " + app['id'] + " to " + version - # Do the Auto Name thing... + # Do the Auto Name thing as well as finding the CV real name if len(app["Repo Type"]) > 0: try: @@ -325,8 +325,13 @@ def main(): app['Auto Name'] = new_name writeit = True + if app['Current Version'].startswith('@string/'): + cv = common.version_name(app['Current Version'], app_dir, flavour) + if app['Current Version'] != cv: + app['Current Version'] = cv + writeit = True except Exception: - msg = "Auto Name failed for %s due to exception: %s" % (app['id'], traceback.format_exc()) + msg = "Auto Name or Current Version failed for %s due to exception: %s" % (app['id'], traceback.format_exc()) if options.auto: mode = app['Auto Update Mode'] diff --git a/fdroidserver/common.py b/fdroidserver/common.py index 123d50ea..3ff0a7aa 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -902,9 +902,19 @@ def fetch_real_name(app_dir, flavour): matches = name_search(line) if matches: return retrieve_string(xml_dir, matches.group(1)) - return '' +# Retrieve the version name +def version_name(original, app_dir, flavour): + for f in manifest_paths(app_dir, flavour): + if not f.endswith(".xml"): + continue + xml_dir = os.path.join(f[:-19], 'res', 'values') + string = retrieve_string(xml_dir, original) + if len(string) > 0: + return string + return original + # Extract some information from the AndroidManifest.xml at the given path. # Returns (version, vercode, package), any or all of which might be None. # All values returned are strings.