UNPKG

nativescript

Version:

Command-line interface for building NativeScript projects

53 lines 2.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.IOSExtensionsService = void 0; const path = require("path"); const constants_1 = require("../constants"); const yok_1 = require("../common/yok"); class IOSExtensionsService { constructor($fs, $pbxprojDomXcode, $xcode, $iOSNativeTargetService) { this.$fs = $fs; this.$pbxprojDomXcode = $pbxprojDomXcode; this.$xcode = $xcode; this.$iOSNativeTargetService = $iOSNativeTargetService; } async addExtensionsFromPath({ extensionsFolderPath, projectData, platformData, pbxProjPath, }) { const targetUuids = []; let addedExtensions = false; if (!this.$fs.exists(extensionsFolderPath)) { return false; } const project = new this.$xcode.project(pbxProjPath); project.parseSync(); this.$iOSNativeTargetService .getTargetDirectories(extensionsFolderPath) .forEach((extensionFolder) => { const target = this.$iOSNativeTargetService.addTargetToProject(extensionsFolderPath, extensionFolder, constants_1.IOSNativeTargetTypes.appExtension, project, platformData); this.configureTarget(extensionFolder, path.join(extensionsFolderPath, extensionFolder), target, project, projectData); targetUuids.push(target.uuid); addedExtensions = true; }); this.$fs.writeFile(pbxProjPath, project.writeSync({ omitEmptyValues: true })); this.$iOSNativeTargetService.prepareSigning(targetUuids, projectData, pbxProjPath); return addedExtensions; } configureTarget(extensionName, extensionPath, target, project, projectData) { const extJsonPath = path.join(extensionPath, "extension.json"); this.$iOSNativeTargetService.setXcodeTargetBuildConfigurationProperties([ { name: "PRODUCT_BUNDLE_IDENTIFIER", value: `${projectData.projectIdentifiers.ios}.${extensionName}`, }, ], extensionName, project); this.$iOSNativeTargetService.setConfigurationsFromJsonFile(extJsonPath, target.uuid, extensionName, project); } removeExtensions({ pbxProjPath }) { const project = new this.$xcode.project(pbxProjPath); project.parseSync(); project.removeTargetsByProductType(constants_1.IOSNativeTargetProductTypes.appExtension); this.$fs.writeFile(pbxProjPath, project.writeSync({ omitEmptyValues: true })); } } exports.IOSExtensionsService = IOSExtensionsService; yok_1.injector.register("iOSExtensionsService", IOSExtensionsService); //# sourceMappingURL=ios-extensions-service.js.map