summaryrefslogtreecommitdiff
path: root/StoneIsland/platforms/ios/cordova/lib/plugman
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2017-09-26 01:35:13 +0200
committerJules Laplace <julescarbon@gmail.com>2017-09-26 01:35:13 +0200
commit597fa051833ca3df6eb185c0143ff82e02dacba1 (patch)
treecb25347477c57f82e955b054b70f4bb5359fb0d2 /StoneIsland/platforms/ios/cordova/lib/plugman
parent6a9186aea6b85beef28e3eb765fbf2322a1c7890 (diff)
push plugin ugh
Diffstat (limited to 'StoneIsland/platforms/ios/cordova/lib/plugman')
-rwxr-xr-xStoneIsland/platforms/ios/cordova/lib/plugman/pluginHandlers.js67
1 files changed, 48 insertions, 19 deletions
diff --git a/StoneIsland/platforms/ios/cordova/lib/plugman/pluginHandlers.js b/StoneIsland/platforms/ios/cordova/lib/plugman/pluginHandlers.js
index 297e3863..416aba96 100755
--- a/StoneIsland/platforms/ios/cordova/lib/plugman/pluginHandlers.js
+++ b/StoneIsland/platforms/ios/cordova/lib/plugman/pluginHandlers.js
@@ -14,10 +14,11 @@
specific language governing permissions and limitations
under the License.
*/
-
+'use strict';
var fs = require('fs');
var path = require('path');
var shell = require('shelljs');
+var util = require('util');
var events = require('cordova-common').events;
var CordovaError = require('cordova-common').CordovaError;
@@ -48,25 +49,44 @@ var handlers = {
'resource-file':{
install:function(obj, plugin, project, options) {
var src = obj.src,
- srcFile = path.resolve(plugin.dir, src),
- destFile = path.resolve(project.resources_dir, path.basename(src));
- if (!fs.existsSync(srcFile)) throw new CordovaError('Cannot find resource file "' + srcFile + '" for plugin ' + plugin.id + ' in iOS platform');
- if (fs.existsSync(destFile)) throw new CordovaError('File already exists at detination "' + destFile + '" for resource file specified by plugin ' + plugin.id + ' in iOS platform');
- project.xcode.addResourceFile(path.join('Resources', path.basename(src)));
+ target = obj.target,
+ srcFile = path.resolve(plugin.dir, src);
+
+ if (!target) {
+ target = path.basename(src);
+ }
+ var destFile = path.resolve(project.resources_dir, target);
+
+ if (!fs.existsSync(srcFile)) {
+ throw new CordovaError('Cannot find resource file "' + srcFile + '" for plugin ' + plugin.id + ' in iOS platform');
+ }
+ if (fs.existsSync(destFile)) {
+ throw new CordovaError('File already exists at destination "' + destFile + '" for resource file specified by plugin ' + plugin.id + ' in iOS platform');
+ }
+ project.xcode.addResourceFile(path.join('Resources', target));
var link = !!(options && options.link);
copyFile(plugin.dir, src, project.projectDir, destFile, link);
},
uninstall:function(obj, plugin, project, options) {
var src = obj.src,
- destFile = path.resolve(project.resources_dir, path.basename(src));
- project.xcode.removeResourceFile(path.join('Resources', path.basename(src)));
+ target = obj.target;
+
+ if (!target) {
+ target = path.basename(src);
+ }
+ var destFile = path.resolve(project.resources_dir, target);
+
+ project.xcode.removeResourceFile(path.join('Resources', target));
shell.rm('-rf', destFile);
}
},
'framework':{ // CB-5238 custom frameworks only
install:function(obj, plugin, project, options) {
var src = obj.src,
- custom = obj.custom;
+ custom = !!(obj.custom), // convert to boolean (if truthy/falsy)
+ embed = !!(obj.embed), // convert to boolean (if truthy/falsy)
+ link = !embed; // either link or embed can be true, but not both. the other has to be false
+
if (!custom) {
var keepFrameworks = keep_these_frameworks;
@@ -76,7 +96,10 @@ var handlers = {
} else {
project.frameworks[src] = project.frameworks[src] || 0;
project.frameworks[src]++;
- project.xcode.addFramework(src, {weak: obj.weak});
+ let opt = { customFramework: false, embed: false, link: true, weak: obj.weak };
+ events.emit('verbose', util.format('Adding non-custom framework to project... %s -> %s', src, JSON.stringify(opt)));
+ project.xcode.addFramework(src, opt);
+ events.emit('verbose', util.format('Non-custom framework added to project. %s -> %s', src, JSON.stringify(opt)));
}
}
return;
@@ -85,14 +108,20 @@ var handlers = {
targetDir = path.resolve(project.plugins_dir, plugin.id, path.basename(src));
if (!fs.existsSync(srcFile)) throw new CordovaError('Cannot find framework "' + srcFile + '" for plugin ' + plugin.id + ' in iOS platform');
if (fs.existsSync(targetDir)) throw new CordovaError('Framework "' + targetDir + '" for plugin ' + plugin.id + ' already exists in iOS platform');
- var link = !!(options && options.link);
- copyFile(plugin.dir, src, project.projectDir, targetDir, link); // frameworks are directories
+ var symlink = !!(options && options.link);
+ copyFile(plugin.dir, src, project.projectDir, targetDir, symlink); // frameworks are directories
// CB-10773 translate back slashes to forward on win32
var project_relative = fixPathSep(path.relative(project.projectDir, targetDir));
- var pbxFile = project.xcode.addFramework(project_relative, {customFramework: true});
- if (pbxFile) {
- project.xcode.addToPbxEmbedFrameworksBuildPhase(pbxFile);
+ // CB-11233 create Embed Frameworks Build Phase if does not exist
+ var existsEmbedFrameworks = project.xcode.buildPhaseObject('PBXCopyFilesBuildPhase', 'Embed Frameworks');
+ if (!existsEmbedFrameworks && embed) {
+ events.emit('verbose', '"Embed Frameworks" Build Phase (Embedded Binaries) does not exist, creating it.');
+ project.xcode.addBuildPhase([], 'PBXCopyFilesBuildPhase', 'Embed Frameworks', null, 'frameworks');
}
+ let opt = { customFramework: true, embed: embed, link: link, sign: true };
+ events.emit('verbose', util.format('Adding custom framework to project... %s -> %s', src, JSON.stringify(opt)));
+ project.xcode.addFramework(project_relative, opt);
+ events.emit('verbose', util.format('Custom framework added to project. %s -> %s', src, JSON.stringify(opt)));
},
uninstall:function(obj, plugin, project, options) {
var src = obj.src;
@@ -304,7 +333,7 @@ function copyFile (plugin_dir, src, project_dir, dest, link) {
shell.mkdir('-p', path.dirname(dest));
if (link) {
- symlinkFileOrDirTree(src, dest);
+ linkFileOrDirTree(src, dest);
} else if (fs.statSync(src).isDirectory()) {
// XXX shelljs decides to create a directory when -R|-r is used which sucks. http://goo.gl/nbsjq
shell.cp('-Rf', path.join(src, '/*'), dest);
@@ -322,7 +351,7 @@ function copyNewFile (plugin_dir, src, project_dir, dest, link) {
copyFile(plugin_dir, src, project_dir, dest, !!link);
}
-function symlinkFileOrDirTree(src, dest) {
+function linkFileOrDirTree(src, dest) {
if (fs.existsSync(dest)) {
shell.rm('-Rf', dest);
}
@@ -330,11 +359,11 @@ function symlinkFileOrDirTree(src, dest) {
if (fs.statSync(src).isDirectory()) {
shell.mkdir('-p', dest);
fs.readdirSync(src).forEach(function(entry) {
- symlinkFileOrDirTree(path.join(src, entry), path.join(dest, entry));
+ linkFileOrDirTree(path.join(src, entry), path.join(dest, entry));
});
}
else {
- fs.symlinkSync(path.relative(fs.realpathSync(path.dirname(dest)), src), dest);
+ fs.linkSync(src, dest);
}
}