Skip to content
This repository has been archived by the owner on Oct 1, 2018. It is now read-only.

Commit

Permalink
Refactoring PR #296
Browse files Browse the repository at this point in the history
  • Loading branch information
nikDemyankov committed May 8, 2017
1 parent 3d3a436 commit c6d1e6f
Showing 1 changed file with 38 additions and 44 deletions.
82 changes: 38 additions & 44 deletions scripts/lib/iosWKWebViewEngineSupport.js
Original file line number Diff line number Diff line change
Expand Up @@ -67,55 +67,49 @@ function isDirectoryExists(dir) {
* @return {Object} projectFile - project file information
*/
function loadProjectFile() {
var platform_ios;
var projectFile;
try {
return loadProjectFile_cordova_7_and_above();
} catch(e) {
}

try {
return loadProjectFile_cordova_5_and_6();
} catch(e) {
}

try {
// try pre-5.0 cordova structure
platform_ios = context.requireCordovaModule('cordova-lib/src/plugman/platforms')['ios'];
projectFile = platform_ios.parseProjectFile(iosPlatformPath);
return loadProjectFile_cordova_pre_5();
} catch (e) {
// let's try cordova 5.0 structure
try {
platform_ios = context.requireCordovaModule('cordova-lib/src/plugman/platforms/ios');
projectFile = platform_ios.parseProjectFile(iosPlatformPath);
} catch (e) {
// cordova 7.0 due to https://issues.apache.org/jira/browse/CB-11242 / https://github.com/apache/cordova-lib/pull/526
var project_files = context.requireCordovaModule('glob')
.sync(path.join(iosPlatformPath, '*.xcodeproj', 'project.pbxproj'));

if (project_files.length === 0) {
throw new Error('does not appear to be an xcode project (no xcode project file)');
}
}

var pbxPath = project_files[0];

var xcodeproj = context.requireCordovaModule('xcode').project(pbxPath);
xcodeproj.parseSync();

projectFile = {
'xcode': xcodeproj,
write: function () {
var fs = context.requireCordovaModule('fs');

var frameworks_file = path.join(iosPlatformPath, 'frameworks.json');
var frameworks = {};
try {
frameworks = context.requireCordovaModule(frameworks_file);
} catch (e) { }

fs.writeFileSync(pbxPath, xcodeproj.writeSync());
if (Object.keys(frameworks).length === 0) {
// If there is no framework references remain in the project, just remove this file
context.requireCordovaModule('shelljs').rm('-rf', frameworks_file);
return;
}
fs.writeFileSync(frameworks_file, JSON.stringify(this.frameworks, null, 4));
}
};
}
throw new Error('Failed to load iOS project file. Maybe your Cordova version is not supported?');
}

function loadProjectFile_cordova_pre_5() {
var platformIos = context.requireCordovaModule('cordova-lib/src/plugman/platforms')['ios'];

return platformIos.parseProjectFile(iosPlatformPath);
}

function loadProjectFile_cordova_5_and_6() {
var platformIos = context.requireCordovaModule('cordova-lib/src/plugman/platforms/ios');

return platformIos.parseProjectFile(iosPlatformPath);
}

function loadProjectFile_cordova_7_and_above() {
var pbxPath = path.join(iosPlatformPath, projectName + '.xcodeproj', 'project.pbxproj');
var xcodeproj = context.requireCordovaModule('xcode').project(pbxPath);
xcodeproj.parseSync();

var saveProj = function() {
fs.writeFileSync(pbxPath, xcodeproj.writeSync());
};

return projectFile;
return {
xcode: xcodeproj,
write: saveProj
};
}

/**
Expand Down

0 comments on commit c6d1e6f

Please sign in to comment.