@@ -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` and `pfm_n_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+
340363def 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