diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2017-09-26 01:35:13 +0200 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2017-09-26 01:35:13 +0200 |
| commit | 597fa051833ca3df6eb185c0143ff82e02dacba1 (patch) | |
| tree | cb25347477c57f82e955b054b70f4bb5359fb0d2 /StoneIsland/platforms/ios/cordova/lib/plugman | |
| parent | 6a9186aea6b85beef28e3eb765fbf2322a1c7890 (diff) | |
push plugin ugh
Diffstat (limited to 'StoneIsland/platforms/ios/cordova/lib/plugman')
| -rwxr-xr-x | StoneIsland/platforms/ios/cordova/lib/plugman/pluginHandlers.js | 67 |
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); } } |
