This repository has been archived on 2022-03-12. You can view files and clone it, but cannot push or open issues or pull requests.
2021-04-02 02:24:13 +03:00

1 line
7.0 KiB
XML

{"version":3,"file":"Entitlements.js","sourceRoot":"","sources":["../../src/ios/Entitlements.ts"],"names":[],"mappings":"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","sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport slash from 'slash';\n\nimport { createEntitlementsPlugin } from '../plugins/ios-plugins';\nimport { InfoPlist } from './IosConfig.types';\nimport * as Paths from './Paths';\nimport {\n getPbxproj,\n getProductName,\n getProjectName,\n isBuildConfig,\n isNotComment,\n isNotTestHost,\n} from './utils/Xcodeproj';\n\ntype Plist = Record<string, any>;\n\nexport const withAccessesContactNotes = createEntitlementsPlugin(\n setAccessesContactNotes,\n 'withAccessesContactNotes'\n);\n\nexport const withAssociatedDomains = createEntitlementsPlugin(\n setAssociatedDomains,\n 'withAssociatedDomains'\n);\n\n// TODO: should it be possible to turn off these entitlements by setting false in app.json and running apply\n\nexport function getConfigEntitlements(config: ExpoConfig) {\n return config.ios?.entitlements ?? {};\n}\n\nexport function setCustomEntitlementsEntries(config: ExpoConfig, entitlements: InfoPlist) {\n const entries = getConfigEntitlements(config);\n\n return {\n ...entitlements,\n ...entries,\n };\n}\n\nexport function setAccessesContactNotes(\n config: ExpoConfig,\n { 'com.apple.developer.contacts.notes': _, ...entitlementsPlist }: Plist\n): Plist {\n if (config.ios?.accessesContactNotes) {\n return {\n ...entitlementsPlist,\n 'com.apple.developer.contacts.notes': config.ios.accessesContactNotes,\n };\n }\n\n return entitlementsPlist;\n}\n\nexport function setAssociatedDomains(\n config: ExpoConfig,\n { 'com.apple.developer.associated-domains': _, ...entitlementsPlist }: Plist\n): Plist {\n if (config.ios?.associatedDomains) {\n return {\n ...entitlementsPlist,\n 'com.apple.developer.associated-domains': config.ios.associatedDomains,\n };\n }\n\n return entitlementsPlist;\n}\n\nexport function getEntitlementsPath(projectRoot: string): string {\n const paths = Paths.getAllEntitlementsPaths(projectRoot);\n let targetPath: string | null = null;\n\n /**\n * Add file to pbxproj under CODE_SIGN_ENTITLEMENTS\n */\n const project = getPbxproj(projectRoot);\n const projectName = getProjectName(projectRoot);\n const productName = getProductName(project);\n\n // Use posix formatted path, even on Windows\n const entitlementsRelativePath = slash(path.join(projectName, `${productName}.entitlements`));\n const entitlementsPath = slash(\n path.normalize(path.join(projectRoot, 'ios', entitlementsRelativePath))\n );\n\n const pathsToDelete: string[] = [];\n\n while (paths.length) {\n const last = slash(path.normalize(paths.pop()!));\n if (last !== entitlementsPath) {\n pathsToDelete.push(last);\n } else {\n targetPath = last;\n }\n }\n\n // Create a new entitlements file\n if (!targetPath) {\n targetPath = entitlementsPath;\n\n // Use the default template\n let template = ENTITLEMENTS_TEMPLATE;\n\n // If an old entitlements file exists, copy it's contents into the new file.\n if (pathsToDelete.length) {\n // Get the last entitlements file and use it as the template\n const last = pathsToDelete[pathsToDelete.length - 1]!;\n template = fs.readFileSync(last, 'utf8');\n }\n\n fs.ensureDirSync(path.dirname(entitlementsPath));\n fs.writeFileSync(entitlementsPath, template);\n\n Object.entries(project.pbxXCBuildConfigurationSection())\n .filter(isNotComment)\n .filter(isBuildConfig)\n .filter(isNotTestHost)\n .forEach(({ 1: { buildSettings } }: any) => {\n buildSettings.CODE_SIGN_ENTITLEMENTS = entitlementsRelativePath;\n });\n fs.writeFileSync(project.filepath, project.writeSync());\n }\n\n // Clean up others\n deleteEntitlementsFiles(pathsToDelete);\n\n return entitlementsPath;\n}\n\nfunction deleteEntitlementsFiles(entitlementsPaths: string[]) {\n for (const path of entitlementsPaths) {\n fs.removeSync(path);\n }\n}\n\nconst ENTITLEMENTS_TEMPLATE = `\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n<key>aps-environment</key>\n<string>development</string>\n</dict>\n</plist>\n`;\n"]}