UNPKG

react-native-integrate

Version:

Automate integration of additional code into React Native projects

67 lines (66 loc) 2.74 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.applyAddFile = applyAddFile; 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 fsTask_1 = require("../fsTask"); const xcodeTask_helpers_1 = require("./xcodeTask.helpers"); async function applyAddFile(content, action, packageName) { let { target } = action; target = target || 'root'; target = (0, variables_1.getText)(target); action.addFile = (0, variables_1.getText)(action.addFile); const fileName = path_1.default.basename(action.addFile); const nativeTarget = content.getTarget(constants_1.Constants.XCODE_APPLICATION_TYPE); let group; let logTarget; let destination = 'ios'; switch (target) { case 'root': group = content.getFirstProject().firstProject.mainGroup; logTarget = 'project root'; break; case 'main': group = content.findPBXGroupKey({ name: nativeTarget.target.name, }); logTarget = `${nativeTarget.target.name} target`; destination += `/${nativeTarget.target.name}`; break; default: target = (0, variables_1.getText)(target); group = content.findPBXGroupKeyByAny(target); logTarget = `${target} target`; destination += `/${target}`; break; } destination += `/${fileName}`; const groupObj = content.getPBXGroupByKey(group); if (groupObj.children.some(x => (0, xcodeTask_helpers_1.unquote)(x.comment) == action.addFile)) { (0, prompter_1.logMessageGray)(`skipped adding resource, ${picocolors_1.default.yellow(action.addFile)} is already referenced in ${picocolors_1.default.yellow(logTarget)}`); return content; } // copy file await (0, fsTask_1.applyFsModification)({ copyFile: fileName, destination, message: action.message, }, packageName); const releasePatch = (0, xcodeTask_helpers_1.patchXcodeProject)({ push: (array, item) => array.unshift(item), }); try { content.addResourceFile(fileName, { target: nativeTarget.uuid }, group); } finally { releasePatch(); } (0, prompter_1.logMessage)(`added ${picocolors_1.default.yellow(action.addFile)} reference in ${picocolors_1.default.yellow(logTarget)}`); return content; }