def _create_dossier()

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)