Skip to content

Commit fa2cecd

Browse files
committed
Preference manifest checking now validates values of pfm_platforms and pfm_n_platforms
1 parent 1852669 commit fa2cecd

1 file changed

Lines changed: 31 additions & 0 deletions

File tree

pre_commit_hooks/check_preference_manifests.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,29 @@ def validate_urls(subkey, filename):
337337
return passed
338338

339339

340+
def validate_platforms(subkey, filename):
341+
"""Ensure that `pfm_platforms` values are valid."""
342+
passed = True
343+
344+
valid_platforms = ["macOS", "iOS", "tvOS"]
345+
346+
platform_keys = ["pfm_platforms", "pfm_n_platforms"]
347+
for platform_key in platform_keys:
348+
if platform_key in subkey:
349+
for platform in subkey[platform_key]:
350+
if platform not in valid_platforms:
351+
print(
352+
"{}: {} value doesn't look like a valid platform string: {}".format(
353+
filename,
354+
platform_key,
355+
platform,
356+
)
357+
)
358+
passed = False
359+
360+
return passed
361+
362+
340363
def validate_subkeys(subkeys, filename):
341364
"""Given a list of subkeys, run validation on their contents."""
342365
passed = True
@@ -392,6 +415,10 @@ def validate_subkeys(subkeys, filename):
392415
if not validate_urls(subkey, filename):
393416
passed = False
394417

418+
# Validate Platforms
419+
if not validate_platforms(subkey, filename):
420+
passed = False
421+
395422
# TODO: Validate pfm_conditionals
396423
# https://github.com/ProfileCreator/ProfileManifests/wiki/Manifest-Format#example-conditions--exclusions
397424

@@ -437,6 +464,10 @@ def main(argv=None):
437464
)
438465
retval = 1
439466

467+
# Ensure platform values are valid
468+
if not validate_platforms(manifest, filename):
469+
retval = 1
470+
440471
# Ensure top level keys and their list items have expected types.
441472
if not validate_manifest_key_types(manifest, filename):
442473
retval = 1

0 commit comments

Comments
 (0)