if commitmsg:
metadatapath = os.path.join('metadata', app.id + '.txt')
- with open(metadatapath, 'w') as f:
- metadata.write_metadata('txt', f, app)
+ metadata.write_metadata(metadatapath, app)
if options.commit:
logging.info("Commiting update for " + metadatapath)
gitcmd = ["git", "commit", "-m", commitmsg]
f.write(app.RepoType + ' ' + app.Repo)
metadatapath = os.path.join('metadata', package + '.txt')
- with open(metadatapath, 'w') as f:
- metadata.write_metadata('txt', f, app)
+ metadata.write_metadata(metadatapath, app)
logging.info("Wrote " + metadatapath)
#
# 'mf' - Writer interface (file, StringIO, ...)
# 'app' - The app data
-def write_txt_metadata(mf, app):
+def write_txt(mf, app):
def w_comment(line):
mf.write("# %s\n" % line)
write_plaintext_metadata(mf, app, w_comment, w_field, w_build)
-def write_yaml_metadata(mf, app):
+def write_yaml(mf, app):
def w_comment(line):
mf.write("# %s\n" % line)
write_plaintext_metadata(mf, app, w_comment, w_field, w_build)
-def write_metadata(fmt, mf, app):
- if fmt == 'txt':
- return write_txt_metadata(mf, app)
- if fmt == 'yaml':
- return write_yaml_metadata(mf, app)
- raise MetaDataException("Unknown metadata format given")
+def write_metadata(metadatapath, app):
+ _, ext = fdroidserver.common.get_extension(metadatapath)
+ accepted = fdroidserver.common.config['accepted_formats']
+ if ext not in accepted:
+ raise MetaDataException('Cannot write "%s", not an accepted format, use: %s' % (
+ metadatapath, ', '.join(accepted)))
+
+ with open(metadatapath, 'w') as mf:
+ if ext == 'txt':
+ return write_txt(mf, app)
+ elif ext == 'yaml':
+ return write_yaml(mf, app)
+ raise MetaDataException('Unknown metadata format: %s' % metadatapath)