@expo/config-plugins
Version:
A library for Expo config plugins
123 lines (118 loc) • 4.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getDevelopmentTeam = getDevelopmentTeam;
exports.setDevelopmentTeamForBuildConfiguration = setDevelopmentTeamForBuildConfiguration;
exports.setDevelopmentTeamForPbxproj = setDevelopmentTeamForPbxproj;
exports.updateDevelopmentTeamForPbxproj = updateDevelopmentTeamForPbxproj;
exports.withDevelopmentTeam = void 0;
function _nodeFs() {
const data = _interopRequireDefault(require("node:fs"));
_nodeFs = function () {
return data;
};
return data;
}
function _xcode() {
const data = _interopRequireDefault(require("xcode"));
_xcode = function () {
return data;
};
return data;
}
function _Paths() {
const data = require("./Paths");
_Paths = function () {
return data;
};
return data;
}
function _Target() {
const data = require("./Target");
_Target = function () {
return data;
};
return data;
}
function _Xcodeproj() {
const data = require("./utils/Xcodeproj");
_Xcodeproj = function () {
return data;
};
return data;
}
function _string() {
const data = require("./utils/string");
_string = function () {
return data;
};
return data;
}
function _iosPlugins() {
const data = require("../plugins/ios-plugins");
_iosPlugins = function () {
return data;
};
return data;
}
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
/**
* Set the Apple development team ID for all build configurations using the first native target.
*/
const withDevelopmentTeam = (config, {
appleTeamId
} = {}) => {
return (0, _iosPlugins().withXcodeProject)(config, config => {
const teamId = appleTeamId ?? getDevelopmentTeam(config);
if (teamId) {
config.modResults = updateDevelopmentTeamForPbxproj(config.modResults, teamId);
}
return config;
});
};
/** Get the Apple development team ID from Expo config, if defined */
exports.withDevelopmentTeam = withDevelopmentTeam;
function getDevelopmentTeam(config) {
return config.ios?.appleTeamId ?? null;
}
/** Set the Apple development team ID for an XCBuildConfiguration object */
function setDevelopmentTeamForBuildConfiguration(xcBuildConfiguration, developmentTeam) {
if (developmentTeam) {
xcBuildConfiguration.buildSettings.DEVELOPMENT_TEAM = (0, _string().trimQuotes)(developmentTeam);
} else {
delete xcBuildConfiguration.buildSettings.DEVELOPMENT_TEAM;
}
}
/**
* Update the Apple development team ID for all XCBuildConfiguration entries, in all native targets.
*
* A development team is stored as a value in XCBuildConfiguration entry.
* Those entries exist for every pair (build target, build configuration).
* Unless target name is passed, the first target defined in the pbxproj is used
* (to keep compatibility with the inaccurate legacy implementation of this function).
*/
function updateDevelopmentTeamForPbxproj(project, appleTeamId) {
const nativeTargets = (0, _Target().getNativeTargets)(project);
nativeTargets.forEach(([, nativeTarget]) => {
(0, _Xcodeproj().getBuildConfigurationsForListId)(project, nativeTarget.buildConfigurationList).forEach(([, buildConfig]) => setDevelopmentTeamForBuildConfiguration(buildConfig, appleTeamId));
});
return project;
}
/**
* Updates the Apple development team ID for pbx projects inside the ios directory of the given project root
*
* @param {string} projectRoot Path to project root containing the ios directory
* @param {[string]} appleTeamId Desired Apple development team ID
*/
function setDevelopmentTeamForPbxproj(projectRoot, appleTeamId) {
// Get all pbx projects in the ${projectRoot}/ios directory
const pbxprojPaths = (0, _Paths().getAllPBXProjectPaths)(projectRoot);
for (const pbxprojPath of pbxprojPaths) {
let project = _xcode().default.project(pbxprojPath);
project.parseSync();
project = updateDevelopmentTeamForPbxproj(project, appleTeamId);
_nodeFs().default.writeFileSync(pbxprojPath, project.writeSync());
}
}
//# sourceMappingURL=DevelopmentTeam.js.map