ftp.mkdir('metadata')
ftp.mkdir('srclibs')
ftp.chdir('metadata')
- ftp.put(os.path.join('metadata', app.id + '.txt'),
- app.id + '.txt')
+ metadatapath = common.metadata_relpath(app.id)
+ ftp.put(metadatapath, os.path.basename(metadatapath))
# And patches if there are any...
if os.path.exists(os.path.join('metadata', app.id)):
send_dir(os.path.join('metadata', app.id))
send_dir(lib)
# Copy the metadata file too...
ftp.chdir(homedir + '/srclibs')
- ftp.put(os.path.join('srclibs', name + '.txt'),
- name + '.txt')
+ srclibpath = common.metadata_srclib_relpath(name)
+ ftp.put(srclibpath, os.path.basename(srclibpath))
# Copy the main app source code
# (no need if it's a srclib)
if (not basesrclib) and os.path.exists(build_dir):
def read_pkg_args(args, allow_vercodes=False):
"""
- Given the arguments in the form of multiple appid:[vc] strings, this returns
- a dictionary with the set of vercodes specified for each package.
+ :param args: arguments in the form of multiple appid:[vc] strings
+ :returns: a dictionary with the set of vercodes specified for each package
"""
vercodes = {}
return ext == f_ext
+def metadata_srclib_relpath(name):
+ '''
+ :param name: name of the src lib. (eg. 'HttpClient')
+ :returns: relative path for requested srclib (eg. 'srclib/HttpClient.txt')
+ '''
+ global config
+ for ext in config['accepted_formats']:
+ pth = os.path.join('srclibs', name + '.' + ext)
+ if os.path.isfile(pth):
+ return pth
+ raise FDroidException("could not find srclib metadata file for '{}'".format(name))
+
+
+def metadata_relpath(appid):
+ '''
+ :param appid: an appid. (eg. 'org.fdroid.fdroid')
+ :returns: relative path for requested srclib (eg. 'metadata/org.fdroid.fdroid.txt')
+ '''
+ global config
+ for ext in config['accepted_formats']:
+ pth = os.path.join('metadata', appid + '.' + ext)
+ if os.path.isfile(pth):
+ return pth
+ raise FDroidException("could not find metadata file for '{}'".format(appid))
+
+
publish_name_regex = re.compile(r"^(.+)_([0-9]+)\.(apk|zip)$")
if type(v) in (float, int):
app[k] = str(v)
+ if 'Builds' in app:
+ app['builds'] = app.pop('Builds')
+
+ if 'flavours' in app and app['flavours'] == [True]:
+ app['flavours'] = ['yes']
+
if isinstance(app.Categories, str):
app.Categories = [app.Categories]
elif app.Categories is None:
build[k] = ['yes']
else:
build[k] = []
- elif flagtype(k) == TYPE_STRING and type(v) in (float, int):
+ elif (flagtype(k) == TYPE_STRING or flagtype(k) == TYPE_INT) \
+ and type(v) in (float, int):
build[k] = str(v)
builds.append(build)
def parse_yaml_metadata(mf, app):
-
- yamlinfo = yaml.load(mf, Loader=YamlLoader)
- app.update(yamlinfo)
+ yamldata = yaml.load(mf, Loader=YamlLoader)
+ app.update(yamldata)
return app