Skip to content

Commit

Permalink
Revert "fix: Try updating Podfile deployment target on prepare (apach…
Browse files Browse the repository at this point in the history
…e#1341)"

This reverts commit ad57677.
  • Loading branch information
deanylev committed Apr 24, 2024
1 parent 64c3051 commit c22532f
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 70 deletions.
44 changes: 41 additions & 3 deletions lib/Api.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ const {
events,
PluginManager
} = require('cordova-common');
const util = require('util');
const xcode = require('xcode');

function setupEvents (externalEventEmitter) {
if (externalEventEmitter) {
Expand Down Expand Up @@ -415,7 +417,7 @@ class Api {
projectFile.purgeProjectFileCache(this.locations.root);

return podfileFile.install(check_reqs.check_cocoapods)
.then(() => podsjsonFile.setSwiftVersionForCocoaPodsLibraries(this.root));
.then(() => this.setSwiftVersionForCocoaPodsLibraries(podsjsonFile));
} else {
events.emit('verbose', 'Podfile unchanged, skipping `pod install`');
}
Expand Down Expand Up @@ -504,7 +506,7 @@ class Api {
events.emit('verbose', 'Running `pod install` (to uninstall pods)');

return podfileFile.install(check_reqs.check_cocoapods)
.then(() => podsjsonFile.setSwiftVersionForCocoaPodsLibraries(this.root));
.then(() => this.setSwiftVersionForCocoaPodsLibraries(podsjsonFile));
} else {
events.emit('verbose', 'Podfile unchanged, skipping `pod install`');
}
Expand All @@ -518,7 +520,43 @@ class Api {
* @param {PodsJson} podsjsonFile A PodsJson instance that represents pods.json
*/
setSwiftVersionForCocoaPodsLibraries (podsjsonFile) {
return podsjsonFile.setSwiftVersionForCocoaPodsLibraries(this.root);
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(this.root, '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 = podsjsonFile.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');
}
}
});
}

/**
Expand Down
52 changes: 3 additions & 49 deletions lib/PodsJson.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,9 @@
under the License.
*/

const fs = require('node:fs');
const path = require('node:path');
const util = require('node:util');
const xcode = require('xcode');
const check_reqs = require('./check_reqs');
const fs = require('fs-extra');
const path = require('path');
const util = require('util');
const events = require('cordova-common').events;
const CordovaError = require('cordova-common').CordovaError;

Expand Down Expand Up @@ -208,48 +206,4 @@ PodsJson.prototype.isDirty = function () {
return this.__dirty;
};

/**
* set Swift Version for all CocoaPods libraries
*/
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');
}
}
});
};

module.exports.PodsJson = PodsJson;
18 changes: 0 additions & 18 deletions lib/prepare.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,6 @@ const PlatformMunger = require('cordova-common').ConfigChanges.PlatformMunger;
const PluginInfoProvider = require('cordova-common').PluginInfoProvider;
const FileUpdater = require('cordova-common').FileUpdater;
const projectFile = require('./projectFile');
const Podfile = require('./Podfile').Podfile;
const check_reqs = require('./check_reqs');
const PlatformConfigParser = require('./PlatformConfigParser');

// launch storyboard and related constants
Expand Down Expand Up @@ -343,22 +341,6 @@ function handleBuildSettings (platformConfig, locations, infoPlist) {

project.write();

// If we have a Podfile, we want to update the deployment target there too
const podPath = path.join(locations.root, Podfile.FILENAME);
if (deploymentTarget && fs.existsSync(podPath)) {
const project_name = locations.xcodeCordovaProj.split(path.sep).pop();

const PodsJson = require('./PodsJson').PodsJson;
const podsjsonFile = new PodsJson(path.join(locations.root, PodsJson.FILENAME));
const podfileFile = new Podfile(podPath, project_name, deploymentTarget);
podfileFile.write();

events.emit('verbose', 'Running `pod install` (to install plugins)');
projectFile.purgeProjectFileCache(locations.root);
return podfileFile.install(check_reqs.check_cocoapods)
.then(() => podsjsonFile.setSwiftVersionForCocoaPodsLibraries(locations.root));
}

return Promise.resolve();
}

Expand Down

0 comments on commit c22532f

Please sign in to comment.