Merge branch 'read_metadata' into 'master'

Read only metadata of apps given on the command line

See merge request fdroid/fdroidserver!1037
This commit is contained in:
Jochen Sprickerhof 2024-04-13 10:12:00 +00:00
commit 475b55acd6
9 changed files with 12 additions and 33 deletions

View File

@ -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)

View File

@ -974,10 +974,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', []):

View File

@ -730,10 +730,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()

View File

@ -891,7 +891,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
@ -902,6 +902,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
@ -911,11 +912,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"))

View File

@ -842,9 +842,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()

View File

@ -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(

View File

@ -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)

View File

@ -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):

View File

@ -14,7 +14,6 @@ import unittest
import uuid
import yaml
import zipfile
import collections
import pathlib
from unittest import mock
from dataclasses import asdict
@ -787,7 +786,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()