in tools/dossier_codesigningtool/dossier_codesigningtool.py [0:0]
def _create_dossier(args):
"""Creates a signing dossier.
Provided a set of args from generate sub-command, creates a new dossier.
"""
dossier_directory = args.output
packaging_required = False
if args.zip:
dossier_directory = tempfile.mkdtemp()
packaging_required = True
if not os.path.exists(dossier_directory):
os.makedirs(dossier_directory)
unique_id = str(uuid.uuid4())
entitlements_filename = None
if hasattr(args, 'entitlements_file') and args.entitlements_file:
entitlements_filename = _copy_entitlements_file(args.entitlements_file,
dossier_directory,
unique_id)
provisioning_profile_filename = None
if hasattr(args, 'provisioning_profile') and args.provisioning_profile:
provisioning_profile_filename = _copy_provisioning_profile(
args.provisioning_profile, dossier_directory, unique_id)
if args.infer_identity and provisioning_profile_filename is None:
raise SystemExit(
'A provisioning profile must be provided to infer the signing identity')
embedded_manifests = []
if hasattr(args, 'embedded_dossier') and args.embedded_dossier:
for embedded_dossier in args.embedded_dossier:
embedded_dossier_bundle_relative_path = embedded_dossier[0]
with _extract_zipped_dossier_if_required(
embedded_dossier[1]) as embedded_dossier_directory:
embedded_dossier_path = embedded_dossier_directory.path
_merge_dossier_contents(embedded_dossier_path, dossier_directory)
embedded_manifest = _read_manifest_from_dossier(embedded_dossier_path)
embedded_manifest[
_EMBEDDED_RELATIVE_PATH_KEY] = embedded_dossier_bundle_relative_path
embedded_manifests.append(embedded_manifest)
codesign_identity = None
if hasattr(args, 'codesign_identity') and args.codesign_identity:
codesign_identity = args.codesign_identity
manifest = _generate_manifest(codesign_identity, entitlements_filename,
provisioning_profile_filename,
embedded_manifests)
with open(os.path.join(dossier_directory, _MANIFEST_FILENAME), 'w') as fp:
fp.write(json.dumps(manifest, sort_keys=True))
if packaging_required:
_zip_dossier(dossier_directory, args.output)
shutil.rmtree(dossier_directory)