summaryrefslogtreecommitdiff
path: root/StoneIsland/platforms/ios/cordova/lib/prepare.js
diff options
context:
space:
mode:
Diffstat (limited to 'StoneIsland/platforms/ios/cordova/lib/prepare.js')
-rwxr-xr-xStoneIsland/platforms/ios/cordova/lib/prepare.js73
1 files changed, 73 insertions, 0 deletions
diff --git a/StoneIsland/platforms/ios/cordova/lib/prepare.js b/StoneIsland/platforms/ios/cordova/lib/prepare.js
index d8f52ac9..c02c187f 100755
--- a/StoneIsland/platforms/ios/cordova/lib/prepare.js
+++ b/StoneIsland/platforms/ios/cordova/lib/prepare.js
@@ -17,6 +17,7 @@
under the License.
*/
+'use strict';
var Q = require('q');
var fs = require('fs');
var path = require('path');
@@ -33,6 +34,7 @@ var PlatformJson = require('cordova-common').PlatformJson;
var PlatformMunger = require('cordova-common').ConfigChanges.PlatformMunger;
var PluginInfoProvider = require('cordova-common').PluginInfoProvider;
var FileUpdater = require('cordova-common').FileUpdater;
+var projectFile = require('./projectFile');
// launch storyboard and related constants
var LAUNCHIMAGE_BUILD_SETTING = 'ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME';
@@ -62,6 +64,7 @@ module.exports.prepare = function (cordovaProject, options) {
updateIcons(cordovaProject, self.locations);
updateSplashScreens(cordovaProject, self.locations);
updateLaunchStoryboardImages(cordovaProject, self.locations);
+ updateFileResources(cordovaProject, self.locations);
})
.then(function () {
events.emit('verbose', 'Prepared iOS project successfully');
@@ -88,6 +91,7 @@ module.exports.clean = function (options) {
cleanIcons(projectRoot, projectConfig, self.locations);
cleanSplashScreens(projectRoot, projectConfig, self.locations);
cleanLaunchStoryboardImages(projectRoot, projectConfig, self.locations);
+ cleanFileResources(projectRoot, projectConfig, self.locations);
});
};
@@ -452,6 +456,75 @@ function cleanSplashScreens(projectRoot, projectConfig, locations) {
}
}
+function updateFileResources(cordovaProject, locations) {
+ const platformDir = path.relative(cordovaProject.root, locations.root);
+ const files = cordovaProject.projectConfig.getFileResources('ios');
+
+ const project = projectFile.parse(locations);
+
+ // if there are resource-file elements in config.xml
+ if (files.length === 0) {
+ events.emit('verbose', 'This app does not have additional resource files defined');
+ return;
+ }
+
+ let resourceMap = {};
+ files.forEach(function(res) {
+ let src = res.src,
+ target = res.target;
+
+ if (!target) {
+ target = src;
+ }
+
+ let targetPath = path.join(project.resources_dir, target);
+ targetPath = path.relative(cordovaProject.root, targetPath);
+
+ const resfile = path.join('Resources', path.relative(project.resources_dir, targetPath));
+ project.xcode.addResourceFile(resfile);
+
+ resourceMap[targetPath] = src;
+ });
+
+ events.emit('verbose', 'Updating resource files at ' + platformDir);
+ FileUpdater.updatePaths(
+ resourceMap, { rootDir: cordovaProject.root }, logFileOp);
+
+ project.write();
+}
+
+function cleanFileResources(projectRoot, projectConfig, locations) {
+ const platformDir = path.relative(projectRoot, locations.root);
+ const files = projectConfig.getFileResources('ios');
+ if (files.length > 0) {
+ events.emit('verbose', 'Cleaning resource files at ' + platformDir);
+
+ const project = projectFile.parse(locations);
+
+ var resourceMap = {};
+ files.forEach(function(res) {
+ let src = res.src,
+ target = res.target;
+
+ if (!target) {
+ target = src;
+ }
+
+ let targetPath = path.join(project.resources_dir, target);
+ targetPath = path.relative(projectRoot, targetPath);
+ const resfile = path.join('Resources', path.basename(targetPath));
+ project.xcode.removeResourceFile(resfile);
+
+ resourceMap[targetPath] = null;
+ });
+
+ FileUpdater.updatePaths(
+ resourceMap, { rootDir: projectRoot, all: true}, logFileOp);
+
+ project.write();
+ }
+}
+
/**
* Returns an array of images for each possible idiom, scale, and size class. The images themselves are
* located in the platform's splash images by their pattern (@scale~idiom~sizesize). All possible