in lib/PodsJson.js [214:253]
PodsJson.prototype.setSwiftVersionForCocoaPodsLibraries = function (projectRoot) {
let __dirty = false;
return check_reqs.check_cocoapods().then(toolOptions => {
if (toolOptions.ignore) {
events.emit('verbose', '=== skip Swift Version Settings For Cocoapods Libraries');
} else {
const podPbxPath = path.join(projectRoot, 'Pods', 'Pods.xcodeproj', 'project.pbxproj');
const podXcodeproj = xcode.project(podPbxPath);
podXcodeproj.parseSync();
const podTargets = podXcodeproj.pbxNativeTargetSection();
const podConfigurationList = podXcodeproj.pbxXCConfigurationList();
const podConfigs = podXcodeproj.pbxXCBuildConfigurationSection();
const libraries = this.getLibraries();
Object.keys(libraries).forEach(key => {
const podJson = libraries[key];
const name = podJson.name;
const swiftVersion = podJson['swift-version'];
if (swiftVersion) {
__dirty = true;
Object.keys(podTargets)
.filter(targetKey => podTargets[targetKey].productName === name)
.map(targetKey => podTargets[targetKey].buildConfigurationList)
.map(buildConfigurationListId => podConfigurationList[buildConfigurationListId])
.map(buildConfigurationList => buildConfigurationList.buildConfigurations)
.reduce((acc, buildConfigurations) => acc.concat(buildConfigurations), [])
.map(buildConfiguration => buildConfiguration.value)
.forEach(buildId => {
__dirty = true;
podConfigs[buildId].buildSettings.SWIFT_VERSION = swiftVersion;
});
}
});
if (__dirty) {
fs.writeFileSync(podPbxPath, podXcodeproj.writeSync(), 'utf-8');
}
}
});
};