writeit = True
logmsg = "Update current version of " + app['id'] + " to " + version
+ if app['Repo Type'] == 'srclib':
+ app_dir = os.path.join('build', 'srclib', app['Repo'])
+ else:
+ app_dir = os.path.join('build/', app['id'])
+
+ vcs = common.getvcs(app["Repo Type"], app["Repo"], app_dir, sdk_path)
+ vcs.gotorevision(None)
+
+ if len(app['builds']) > 0:
+ if 'subdir' in app['builds'][-1]:
+ app_dir = os.path.join(app_dir, app['builds'][-1]['subdir'])
+
+ new_name = common.fetch_real_name(app_dir)
+ if new_name != app['Auto Name']:
+ app['Auto Name'] = new_name
+ writeit = True
+ logmsg = "Update auto name of " + app['id'] + " to " + new_name
+
if options.auto:
mode = app['Auto Update Mode']
if mode == 'None':
# Defaults for fields that come from metadata...
thisinfo['Name'] = None
+ thisinfo['Auto Name'] = ''
thisinfo['Category'] = 'None'
thisinfo['Description'] = []
thisinfo['Summary'] = ''
mf.write('\n')
if app['Name']:
writefield('Name')
+ writefield('Auto Name')
writefield('Summary')
writefield('Description', '')
for line in app['Description']:
return ps.text_html
+# Retrieve the package name
+def fetch_real_name(app_dir):
+ name_search = re.compile(r'.*android:label="([^"]+)".*').search
+ name = None
+ for line in file(os.path.join(app_dir, 'AndroidManifest.xml')):
+ if name is not None:
+ break
+ matches = name_search(line)
+ if matches:
+ name = matches.group(1)
+
+ if name.startswith('@string/'):
+ id = name[8:]
+ name2 = None
+ string_search= re.compile(r'.*"'+id+'">([^<]+?)<.*').search
+ for xmlfile in glob.glob(os.path.join(
+ app_dir, 'res', 'values', 'strings*.xml')):
+ for line in file(xmlfile):
+ if name2 is not None:
+ break
+ matches = string_search(line)
+ if matches:
+ name2 = matches.group(1)
+ return name2
+
+ return name
# Extract some information from the AndroidManifest.xml at the given path.
# Returns (version, vercode, package), any or all of which might be None.