def _get_xcodeproj_versions()

in eng/scripts/version.py [0:0]


def _get_xcodeproj_versions():
    versions = {}
    pattern = os.path.join(ROOT, 'sdk', '*', '*', '*.xcodeproj', 'project.pbxproj')
    proj_files = glob.glob(pattern)
    for path in proj_files:
        module_name = re.search(r'/([a-zA-Z]+)\.xcodeproj', path).groups()[0]
        with open(path, mode='r') as f:
            lines = [l for l in f.readlines() if 'MARKETING_VERSION' in l]
        for line in lines:
            # version may or may not be in double quotes in the file
            version_match = re.search(r'"([^"]+)"', line) or re.search(r'MARKETING_VERSION = ([^;]+);', line)
            version = version_match.groups()[0]
            if module_name in versions and versions[module_name] != version:
                # throws error if multiple different versions are found
                message = f'Found multiple versions for {module_name}: {version} and {versions[module_name]}'
                _log_error_and_quit(message)
            else:
                versions[module_name] = version
    return versions