UNPKG

react-native-integrate

Version:

Automate integration of additional code into React Native projects

122 lines (121 loc) 4.89 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.applyAddCapability = applyAddCapability; const path_1 = __importDefault(require("path")); const picocolors_1 = __importDefault(require("picocolors")); const constants_1 = require("../../constants"); const prompter_1 = require("../../prompter"); const variables_1 = require("../../variables"); const xcodeTask_addCapability_ad_1 = require("./xcodeTask.addCapability.ad"); const xcodeTask_addCapability_bm_1 = require("./xcodeTask.addCapability.bm"); const xcodeTask_addCapability_common_1 = require("./xcodeTask.addCapability.common"); const xcodeTask_addCapability_gc_1 = require("./xcodeTask.addCapability.gc"); const xcodeTask_addCapability_groups_1 = require("./xcodeTask.addCapability.groups"); const xcodeTask_addCapability_ks_1 = require("./xcodeTask.addCapability.ks"); const xcodeTask_addCapability_maps_1 = require("./xcodeTask.addCapability.maps"); const xcodeTask_helpers_1 = require("./xcodeTask.helpers"); function applyAddCapability(content, action) { const { addCapability } = action; let { target } = action; target = (0, variables_1.getText)(target); const nativeTarget = content.getTarget(constants_1.Constants.XCODE_APPLICATION_TYPE); let group; let destination = 'ios'; switch (target) { case 'main': group = content.findPBXGroupKey({ name: nativeTarget.target.name, }); destination += `/${nativeTarget.target.name}`; break; default: group = content.findPBXGroupKeyByAny(target); destination += `/${target}`; break; } const groupObj = content.getPBXGroupByKey(group); const groupName = groupObj.name || path_1.default.basename(groupObj.path); const filename = groupName + '.entitlements'; destination += `/${filename}`; const isAdded = groupObj.children.some(x => (0, xcodeTask_helpers_1.unquote)(x.comment) == filename); if (!isAdded) { const releasePatch = (0, xcodeTask_helpers_1.patchXcodeProject)({ push: (array, item) => array.unshift(item), }); try { content.addFile(`${filename}`, group, { target: nativeTarget.uuid, lastKnownFileType: 'text.plist.entitlements', }); } finally { releasePatch(); } content.updateBuildProperty('CODE_SIGN_ENTITLEMENTS', `${groupName}/${filename}`, null, groupName); content.updateBuildProperty('CODE_SIGN_ENTITLEMENTS', `${groupName}/${filename}`, null, '"' + groupName + '"'); } switch (addCapability) { case 'push': case 'wireless-configuration': case 'app-attest': case 'data-protection': case 'homekit': case 'healthkit': case 'inter-app-audio': case 'increased-memory': (0, xcodeTask_addCapability_common_1.addCommonCapability)({ destination, filename, targetName: groupName, capability: addCapability, }); break; case 'groups': (0, xcodeTask_addCapability_groups_1.addGroupsCapability)({ destination, filename, targetName: groupName, groups: action.groups, }); break; case 'domains': (0, xcodeTask_addCapability_ad_1.addDomainsCapability)({ destination, filename, targetName: groupName, domains: action.domains, }); break; case 'background-mode': (0, xcodeTask_addCapability_bm_1.addBMCapability)({ targetName: groupName, modes: action.modes, }); break; case 'game-controllers': (0, xcodeTask_addCapability_gc_1.addGCCapability)({ targetName: groupName, controllers: action.controllers, }); break; case 'maps': (0, xcodeTask_addCapability_maps_1.addMapsCapability)({ targetName: groupName, routing: action.routing, }); break; case 'keychain-sharing': (0, xcodeTask_addCapability_ks_1.addKSCapability)({ destination, filename, targetName: groupName, groups: action.groups, }); break; } (0, prompter_1.logMessage)(`added ${picocolors_1.default.yellow(addCapability)} capability to the ${picocolors_1.default.yellow(groupName)} target`); return content; }