Swiftgram/build-system/Make/GenerateProfiles.py
2022-12-06 23:12:51 +04:00

45 lines
1.9 KiB
Python

import json
import os
import sys
import shutil
import tempfile
import plistlib
import argparse
from BuildEnvironment import run_executable_with_output, check_run_system
def get_certificate_base64():
certificate_data = run_executable_with_output('security', arguments=['find-certificate', '-c', 'Apple Distribution: Telegram FZ-LLC (C67CF9S4VU)', '-p'])
certificate_data = certificate_data.replace('-----BEGIN CERTIFICATE-----', '')
certificate_data = certificate_data.replace('-----END CERTIFICATE-----', '')
certificate_data = certificate_data.replace('\n', '')
return certificate_data
def process_provisioning_profile(source, destination, certificate_data):
parsed_plist = run_executable_with_output('security', arguments=['cms', '-D', '-i', source], check_result=True)
parsed_plist_file = tempfile.mktemp()
with open(parsed_plist_file, 'w+') as file:
file.write(parsed_plist)
run_executable_with_output('plutil', arguments=['-remove', 'DeveloperCertificates.0', parsed_plist_file])
run_executable_with_output('plutil', arguments=['-insert', 'DeveloperCertificates.0', '-data', certificate_data, parsed_plist_file])
run_executable_with_output('plutil', arguments=['-remove', 'DER-Encoded-Profile', parsed_plist_file])
run_executable_with_output('security', arguments=['cms', '-S', '-N', 'Apple Distribution: Telegram FZ-LLC (C67CF9S4VU)', '-i', parsed_plist_file, '-o', destination])
os.unlink(parsed_plist_file)
def generate_provisioning_profiles(source_path, destination_path):
certificate_data = get_certificate_base64()
if not os.path.exists(destination_path):
print('{} does not exits'.format(destination_path))
sys.exit(1)
for file_name in os.listdir(source_path):
if file_name.endswith('.mobileprovision'):
process_provisioning_profile(source=source_path + '/' + file_name, destination=destination_path + '/' + file_name, certificate_data=certificate_data)