diff --git a/fdroidserver/checkupdates.py b/fdroidserver/checkupdates.py index 494a1834..1962dded 100644 --- a/fdroidserver/checkupdates.py +++ b/fdroidserver/checkupdates.py @@ -493,14 +493,14 @@ def checkupdates_app(app, first=True): logging.warn('Invalid auto update mode "' + mode + '" on ' + app['id']) if commitmsg: - metafile = os.path.join('metadata', app['id'] + '.txt') - metadata.write_metadata(metafile, app) + metadatapath = os.path.join('metadata', app['id'] + '.txt') + metadata.write_metadata(metadatapath, app) if options.commit: - logging.info("Commiting update for " + metafile) + logging.info("Commiting update for " + metadatapath) gitcmd = ["git", "commit", "-m", commitmsg] if 'auto_author' in config: gitcmd.extend(['--author', config['auto_author']]) - gitcmd.extend(["--", metafile]) + gitcmd.extend(["--", metadatapath]) if subprocess.call(gitcmd) != 0: logging.error("Git commit failed") sys.exit(1) diff --git a/fdroidserver/import.py b/fdroidserver/import.py index 5c47f780..31757dbe 100644 --- a/fdroidserver/import.py +++ b/fdroidserver/import.py @@ -234,9 +234,9 @@ def main(): with open('build/.fdroidvcs-' + package, 'w') as f: f.write(repotype + ' ' + repo) - metafile = os.path.join('metadata', package + '.txt') - metadata.write_metadata(metafile, app) - logging.info("Wrote " + metafile) + metadatapath = os.path.join('metadata', package + '.txt') + metadata.write_metadata(metadatapath, app) + logging.info("Wrote " + metadatapath) if __name__ == "__main__": diff --git a/fdroidserver/metadata.py b/fdroidserver/metadata.py index 6502d338..03701db9 100644 --- a/fdroidserver/metadata.py +++ b/fdroidserver/metadata.py @@ -418,11 +418,9 @@ def description_html(lines, linkres): return ps.text_html -def parse_srclib(metafile): +def parse_srclib(metadatapath): thisinfo = {} - if metafile and not isinstance(metafile, file): - metafile = open(metafile, "r") # Defaults for fields that come from metadata thisinfo['Repo Type'] = '' @@ -430,9 +428,11 @@ def parse_srclib(metafile): thisinfo['Subdir'] = None thisinfo['Prepare'] = None - if metafile is None: + if not os.path.exists(metadatapath): return thisinfo + metafile = open(metadatapath, "r") + n = 0 for line in metafile: n += 1 @@ -475,9 +475,9 @@ def read_srclibs(): if not os.path.exists(srcdir): os.makedirs(srcdir) - for metafile in sorted(glob.glob(os.path.join(srcdir, '*.txt'))): - srclibname = os.path.basename(metafile[:-4]) - srclibs[srclibname] = parse_srclib(metafile) + for metadatapath in sorted(glob.glob(os.path.join(srcdir, '*.txt'))): + srclibname = os.path.basename(metadatapath[:-4]) + srclibs[srclibname] = parse_srclib(metadatapath) # Read all metadata. Returns a list of 'app' objects (which are dictionaries as @@ -494,23 +494,23 @@ def read_metadata(xref=True): if not os.path.exists(basedir): os.makedirs(basedir) - for metafile in sorted(glob.glob(os.path.join('metadata', '*.txt'))): - appid, appinfo = parse_txt_metadata(metafile) + for metadatapath in sorted(glob.glob(os.path.join('metadata', '*.txt'))): + appid, appinfo = parse_txt_metadata(metadatapath) check_metadata(appinfo) apps[appid] = appinfo - for metafile in sorted(glob.glob(os.path.join('metadata', '*.json'))): - appid, appinfo = parse_json_metadata(metafile) + for metadatapath in sorted(glob.glob(os.path.join('metadata', '*.json'))): + appid, appinfo = parse_json_metadata(metadatapath) check_metadata(appinfo) apps[appid] = appinfo - for metafile in sorted(glob.glob(os.path.join('metadata', '*.xml'))): - appid, appinfo = parse_xml_metadata(metafile) + for metadatapath in sorted(glob.glob(os.path.join('metadata', '*.xml'))): + appid, appinfo = parse_xml_metadata(metadatapath) check_metadata(appinfo) apps[appid] = appinfo - for metafile in sorted(glob.glob(os.path.join('metadata', '*.yaml'))): - appid, appinfo = parse_yaml_metadata(metafile) + for metadatapath in sorted(glob.glob(os.path.join('metadata', '*.yaml'))): + appid, appinfo = parse_yaml_metadata(metadatapath) check_metadata(appinfo) apps[appid] = appinfo @@ -586,8 +586,8 @@ def split_list_values(s): return [v for v in l if v] -def get_default_app_info_list(metafile=None): - appid = os.path.splitext(os.path.basename(metafile))[0] +def get_default_app_info_list(metadatapath): + appid = os.path.splitext(os.path.basename(metadatapath))[0] thisinfo = {} thisinfo.update(app_defaults) if appid is not None: @@ -666,7 +666,7 @@ def post_metadata_parse(thisinfo): # Parse metadata for a single application. # -# 'metafile' - the filename to read. The package id for the application comes +# 'metadatapath' - the filename to read. The package id for the application comes # from this filename. Pass None to get a blank entry. # # Returns a dictionary containing all the details of the application. There are @@ -720,14 +720,14 @@ def _decode_dict(data): return rv -def parse_json_metadata(metafile): +def parse_json_metadata(metadatapath): - appid, thisinfo = get_default_app_info_list(metafile) + appid, thisinfo = get_default_app_info_list(metadatapath) # fdroid metadata is only strings and booleans, no floats or ints. And # json returns unicode, and fdroidserver still uses plain python strings # TODO create schema using https://pypi.python.org/pypi/jsonschema - jsoninfo = json.load(open(metafile, 'r'), + jsoninfo = json.load(open(metadatapath, 'r'), object_hook=_decode_dict, parse_int=lambda s: s, parse_float=lambda s: s) @@ -737,15 +737,15 @@ def parse_json_metadata(metafile): return (appid, thisinfo) -def parse_xml_metadata(metafile): +def parse_xml_metadata(metadatapath): - appid, thisinfo = get_default_app_info_list(metafile) + appid, thisinfo = get_default_app_info_list(metadatapath) - tree = ElementTree.ElementTree(file=metafile) + tree = ElementTree.ElementTree(file=metadatapath) root = tree.getroot() if root.tag != 'resources': - logging.critical(metafile + ' does not have root as !') + logging.critical(metadatapath + ' does not have root as !') sys.exit(1) supported_metadata = app_defaults.keys() @@ -787,18 +787,18 @@ def parse_xml_metadata(metafile): return (appid, thisinfo) -def parse_yaml_metadata(metafile): +def parse_yaml_metadata(metadatapath): - appid, thisinfo = get_default_app_info_list(metafile) + appid, thisinfo = get_default_app_info_list(metadatapath) - yamlinfo = yaml.load(open(metafile, 'r'), Loader=YamlLoader) + yamlinfo = yaml.load(open(metadatapath, 'r'), Loader=YamlLoader) thisinfo.update(yamlinfo) post_metadata_parse(thisinfo) return (appid, thisinfo) -def parse_txt_metadata(metafile): +def parse_txt_metadata(metadatapath): linedesc = None @@ -874,8 +874,8 @@ def parse_txt_metadata(metafile): thisinfo['comments'].append([key, comment]) del curcomments[:] - appid, thisinfo = get_default_app_info_list(metafile) - metafile = open(metafile, "r") + appid, thisinfo = get_default_app_info_list(metadatapath) + metafile = open(metadatapath, "r") mode = 0 buildlines = []