From d00a87ed6c7be8b03a5d8bf688472e9309c2ac09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20P=C3=B6hn?= Date: Tue, 23 Apr 2024 17:28:30 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=8F=8F=20alt-store=20index:=20incorporate?= =?UTF-8?q?=20review=20feedback?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fdroidserver/common.py | 8 ++++++-- fdroidserver/index.py | 12 +++++++----- fdroidserver/update.py | 20 ++++++++++++++------ tests/index.TestCase | 2 +- 4 files changed, 28 insertions(+), 14 deletions(-) diff --git a/fdroidserver/common.py b/fdroidserver/common.py index 9e1a5340..c7c4c5c2 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -4155,7 +4155,6 @@ def is_repo_file(filename, for_gpg_signing=False): if isinstance(filename, str): filename = filename.encode('utf-8', errors="surrogateescape") ignore_files = [ - b'altstore-index.json', b'entry.jar', b'index-v1.jar', b'index.css', @@ -4166,7 +4165,12 @@ def is_repo_file(filename, for_gpg_signing=False): b'index_unsigned.jar', ] if not for_gpg_signing: - ignore_files += [b'entry.json', b'index-v1.json', b'index-v2.json'] + ignore_files += [ + b'altstore-index.json', + b'entry.json', + b'index-v1.json', + b'index-v2.json', + ] return ( os.path.isfile(filename) diff --git a/fdroidserver/index.py b/fdroidserver/index.py index 601cd9ce..778c4e75 100644 --- a/fdroidserver/index.py +++ b/fdroidserver/index.py @@ -130,7 +130,7 @@ def make(apps, apks, repodir, archive): apks, common.config, repodir, - indent=2 if common.options.pretty else None + pretty=common.options.pretty, ) @@ -1759,14 +1759,14 @@ def get_public_key_from_jar(jar): return public_key, public_key_fingerprint -def make_altstore(apps, apks, config, repodir, indent=None): - """ - Assemble altstore-index.json for iOS (.ipa) apps. +def make_altstore(apps, apks, config, repodir, pretty=False): + """Assemble altstore-index.json for iOS (.ipa) apps. builds index files based on: https://faq.altstore.io/distribute-your-apps/make-a-source https://faq.altstore.io/distribute-your-apps/updating-apps """ + indent = 2 if pretty else None # for now alt-store support is english only for lang in ['en']: @@ -1825,7 +1825,9 @@ def make_altstore(apps, apks, config, repodir, indent=None): # populate 'versions' for apk in apks: - if apk['packageName'] == packageName and apk.get('apkName', '').lower().endswith('.ipa'): + if apk['packageName'] == packageName and apk.get( + 'apkName', '' + ).lower().endswith('.ipa'): v = { "version": apk["versionName"], "date": apk["added"].isoformat(), diff --git a/fdroidserver/update.py b/fdroidserver/update.py index 6cd661a1..23e3d604 100644 --- a/fdroidserver/update.py +++ b/fdroidserver/update.py @@ -629,13 +629,20 @@ def parse_ipa(ipa_path, file_size, sha256): if info.filename.endswith("/embedded.mobileprovision"): print("parsing", info.filename) with ipa_zip.open(info) as mopro_file: - mopro_content_info = asn1crypto.cms.ContentInfo.load(mopro_file.read()) + mopro_content_info = asn1crypto.cms.ContentInfo.load( + mopro_file.read() + ) mopro_payload_info = mopro_content_info['content'] - mopro_payload = mopro_payload_info['encap_content_info']['content'].native + mopro_payload = mopro_payload_info['encap_content_info'][ + 'content' + ].native mopro = biplist.readPlistFromString(mopro_payload) # https://faq.altstore.io/distribute-your-apps/make-a-source#entitlements-array-of-strings for entitlement in mopro.get('Entitlements', {}).keys(): - if entitlement not in ["com.app.developer.team-identifier", 'application-identifier']: + if entitlement not in [ + "com.app.developer.team-identifier", + 'application-identifier' + ]: ipa["ipa_entitlements"].add(entitlement) return ipa @@ -666,8 +673,7 @@ def scan_repo_for_ipas(apkcache, repodir, knownapks): file_size = os.stat(ipa_path).st_size if file_size == 0: - raise FDroidException(_('{path} is zero size!') - .format(path=ipa_path)) + raise FDroidException(_('{path} is zero size!').format(path=ipa_path)) sha256 = common.sha256sum(ipa_path) ipa = apkcache.get(ipa_name, {}) @@ -1420,7 +1426,9 @@ def insert_localized_ios_app_metadata(apps_with_packages): for metadata_file in (lang_dir).iterdir(): key = FASTLANE_IOS_MAP.get(metadata_file.name) if key: - fdroidserver.update._set_localized_text_entry(app, locale, key, metadata_file) + fdroidserver.update._set_localized_text_entry( + app, locale, key, metadata_file + ) screenshots = fdroidserver.update.discover_ios_screenshots(fastlane_dir) fdroidserver.update.copy_ios_screenshots_to_repo(screenshots, package_name) diff --git a/tests/index.TestCase b/tests/index.TestCase index 49fda126..6e8ec89b 100755 --- a/tests/index.TestCase +++ b/tests/index.TestCase @@ -875,7 +875,7 @@ class AltstoreIndexTest(unittest.TestCase): apks, config, repodir, - 2, + True, ) with open(repodir / "altstore-index.json", 'r') as f: