diff --git a/examples/fdroid_fetchsrclibs.py b/examples/fdroid_fetchsrclibs.py index 978baacf..2713d1d9 100644 --- a/examples/fdroid_fetchsrclibs.py +++ b/examples/fdroid_fetchsrclibs.py @@ -20,9 +20,7 @@ def main(): metadata.add_metadata_arguments(parser) options = parser.parse_args() common.options = options - pkgs = common.read_pkg_args(options.appid, True) - allapps = metadata.read_metadata(pkgs) - apps = common.read_app_args(options.appid, allapps, True) + apps = common.read_app_args(options.appid, allow_vercodes=True) common.read_config(options) srclib_dir = os.path.join('build', 'srclib') os.makedirs(srclib_dir, exist_ok=True) diff --git a/fdroidserver/build.py b/fdroidserver/build.py index 5f94312b..627ce0c0 100644 --- a/fdroidserver/build.py +++ b/fdroidserver/build.py @@ -970,10 +970,7 @@ def main(): srclib_dir = os.path.join(build_dir, 'srclib') extlib_dir = os.path.join(build_dir, 'extlib') - # Read all app and srclib metadata - pkgs = common.read_pkg_args(options.appid, True) - allapps = metadata.read_metadata(pkgs, sort_by_time=True) - apps = common.read_app_args(options.appid, allapps, True) + apps = common.read_app_args(options.appid, allow_vercodes=True, sort_by_time=True) for appid, app in list(apps.items()): if (app.get('Disabled') and not options.force) or not app.get('RepoType') or not app.get('Builds', []): diff --git a/fdroidserver/checkupdates.py b/fdroidserver/checkupdates.py index 6aaaf117..9c1abe16 100644 --- a/fdroidserver/checkupdates.py +++ b/fdroidserver/checkupdates.py @@ -725,10 +725,7 @@ def main(): logging.error(_('Build metadata git repo has uncommited changes!')) sys.exit(1) - # Get all apps... - allapps = metadata.read_metadata() - - apps = common.read_app_args(options.appid, allapps, False) + apps = common.read_app_args(options.appid) processed = [] failed = dict() diff --git a/fdroidserver/common.py b/fdroidserver/common.py index e8774ef5..92df8544 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -853,7 +853,7 @@ def get_metadata_files(vercodes): return metadatafiles -def read_app_args(appid_versionCode_pairs, allapps, allow_vercodes=False): +def read_app_args(appid_versionCode_pairs, allow_vercodes=False, sort_by_time=False): """Build a list of App instances for processing. On top of what read_pkg_args does, this returns the whole app @@ -864,6 +864,7 @@ def read_app_args(appid_versionCode_pairs, allapps, allow_vercodes=False): """ vercodes = read_pkg_args(appid_versionCode_pairs, allow_vercodes) + allapps = fdroidserver.metadata.read_metadata(vercodes, sort_by_time) if not vercodes: return allapps @@ -873,11 +874,6 @@ def read_app_args(appid_versionCode_pairs, allapps, allow_vercodes=False): if appid in vercodes: apps[appid] = app - if len(apps) != len(vercodes): - for p in vercodes: - if p not in allapps: - logging.critical(_("No such package: %s") % p) - raise FDroidException(_("Found invalid appids in arguments")) if not apps: raise FDroidException(_("No packages specified")) diff --git a/fdroidserver/lint.py b/fdroidserver/lint.py index 150258ad..89ba27e6 100644 --- a/fdroidserver/lint.py +++ b/fdroidserver/lint.py @@ -843,9 +843,7 @@ def main(): def lint_metadata(options): - # Get all apps... - allapps = metadata.read_metadata(options.appid) - apps = common.read_app_args(options.appid, allapps, False) + apps = common.read_app_args(options.appid) anywarns = check_for_unsupported_metadata_files() diff --git a/fdroidserver/metadata.py b/fdroidserver/metadata.py index 240b82ba..def1173c 100644 --- a/fdroidserver/metadata.py +++ b/fdroidserver/metadata.py @@ -551,7 +551,7 @@ def read_srclibs(): srclibs[metadatapath.stem] = parse_yaml_srclib(metadatapath) -def read_metadata(appids={}, sort_by_time=False): +def read_metadata(vercodes={}, sort_by_time=False): """Return a list of App instances sorted newest first. This reads all of the metadata files in a 'data' repository, then @@ -559,7 +559,7 @@ def read_metadata(appids={}, sort_by_time=False): sorted based on creation time, newest first. Most of the time, the newer files are the most interesting. - appids is a dict with appids a keys and versionCodes as values. + vercodes is a dict with appids a keys and versionCodes as values. """ # Always read the srclibs before the apps, since they can use a srlib as @@ -571,8 +571,7 @@ def read_metadata(appids={}, sort_by_time=False): for basedir in ('metadata', 'tmp'): Path(basedir).mkdir(exist_ok=True) - if appids: - vercodes = common.read_pkg_args(appids) + if vercodes: metadatafiles = common.get_metadata_files(vercodes) else: metadatafiles = list(Path('metadata').glob('*.yml')) + list( diff --git a/fdroidserver/rewritemeta.py b/fdroidserver/rewritemeta.py index 5a1a6ea0..e17416a4 100644 --- a/fdroidserver/rewritemeta.py +++ b/fdroidserver/rewritemeta.py @@ -82,9 +82,7 @@ def main(): config = common.read_config(options) - # Get all apps... - allapps = metadata.read_metadata(options.appid) - apps = common.read_app_args(options.appid, allapps, False) + apps = common.read_app_args(options.appid) for appid, app in apps.items(): path = Path(app.metadatapath) diff --git a/fdroidserver/scanner.py b/fdroidserver/scanner.py index c875b4ea..b9aa792e 100644 --- a/fdroidserver/scanner.py +++ b/fdroidserver/scanner.py @@ -829,10 +829,7 @@ def main(): _get_tool() return - # Read all app and srclib metadata - - allapps = metadata.read_metadata() - apps = common.read_app_args(appids, allapps, True) + apps = common.read_app_args(appids, allow_vercodes=True) build_dir = 'build' if not os.path.isdir(build_dir): diff --git a/tests/scanner.TestCase b/tests/scanner.TestCase index aba95323..29326a9b 100755 --- a/tests/scanner.TestCase +++ b/tests/scanner.TestCase @@ -14,7 +14,6 @@ import unittest import uuid import yaml import zipfile -import collections import pathlib from unittest import mock from dataclasses import asdict @@ -786,7 +785,7 @@ class Test_main(unittest.TestCase): self.exit_func.assert_not_called() self.read_app_args_func.assert_called_once_with( - ['com.example.app'], collections.OrderedDict(), True + ['com.example.app'], allow_vercodes=True ) self.scan_binary_func.assert_not_called()