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-10-06 08:35:05 +00:00
commit b9ff024775
10 changed files with 16 additions and 37 deletions

View file

@ -24,9 +24,9 @@ def main():
)
metadata.add_metadata_arguments(parser)
options = common.parse_args(parser)
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_version_codes=True, sort_by_time=True
)
common.read_config()
for appid, app in apps.items():

View file

@ -19,9 +19,7 @@ def main():
parser.add_argument("appid", nargs='*', help=_("applicationId with optional versionCode in the form APPID[:VERCODE]"))
metadata.add_metadata_arguments(parser)
options = common.parse_args(parser)
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_version_codes=True, sort_by_time=True)
common.read_config()
srclib_dir = os.path.join('build', 'srclib')
os.makedirs(srclib_dir, exist_ok=True)

View file

@ -1117,10 +1117,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_version_codes=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

@ -939,7 +939,7 @@ def get_metadata_files(vercodes):
return metadatafiles
def read_app_args(appid_versionCode_pairs, allapps, allow_version_codes=False):
def read_app_args(appid_versionCode_pairs, allow_version_codes=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
@ -950,6 +950,7 @@ def read_app_args(appid_versionCode_pairs, allapps, allow_version_codes=False):
"""
vercodes = read_pkg_args(appid_versionCode_pairs, allow_version_codes)
allapps = fdroidserver.metadata.read_metadata(vercodes, sort_by_time)
if not vercodes:
return allapps
@ -959,11 +960,6 @@ def read_app_args(appid_versionCode_pairs, allapps, allow_version_codes=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

@ -878,9 +878,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

@ -545,7 +545,7 @@ def read_srclibs():
srclibs[metadatapath.stem] = parse_yaml_srclib(metadatapath)
def read_metadata(appids={}, sort_by_time=False):
def read_metadata(appid_to_vercode={}, 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
@ -553,7 +553,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.
appid_to_vercode 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
@ -565,9 +565,8 @@ 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)
metadatafiles = common.get_metadata_files(vercodes)
if appid_to_vercode:
metadatafiles = common.get_metadata_files(appid_to_vercode)
else:
metadatafiles = list(Path('metadata').glob('*.yml')) + list(
Path('.').glob('.fdroid.yml')

View file

@ -81,9 +81,7 @@ def main():
config = common.read_config()
# 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

@ -1144,10 +1144,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_version_codes=True)
build_dir = 'build'
if not os.path.isdir(build_dir):

View file

@ -1,6 +1,5 @@
#!/usr/bin/env python3
import collections
import glob
import inspect
import logging
@ -855,7 +854,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_version_codes=True
)
self.scan_binary_func.assert_not_called()