diff options
Diffstat (limited to 'StoneIsland/platforms/ios/cordova/lib/prepare.js')
| -rwxr-xr-x | StoneIsland/platforms/ios/cordova/lib/prepare.js | 73 |
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 |
