You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by an...@apache.org on 2013/03/13 00:24:52 UTC
[1/2] git commit: Support web-only plugins with no config changes
Support web-only plugins with no config changes
The lack of a <plugin> line on Android and BB10, and lack of
config_changes on iOS, was causing installation failures.
Project: http://git-wip-us.apache.org/repos/asf/cordova-plugman/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugman/commit/5198005e
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugman/tree/5198005e
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugman/diff/5198005e
Branch: refs/heads/master
Commit: 5198005e624d652c9a49a1c411401ea6cc6fa550
Parents: c5f4335
Author: Braden Shepherdson <br...@chromium.org>
Authored: Wed Feb 13 14:58:34 2013 -0500
Committer: Braden Shepherdson <br...@gmail.com>
Committed: Tue Mar 12 11:17:40 2013 -0400
----------------------------------------------------------------------
platforms/android.js | 8 +++++++-
platforms/bb10.js | 5 ++++-
platforms/ios.js | 18 ++++++++++--------
3 files changed, 21 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/5198005e/platforms/android.js
----------------------------------------------------------------------
diff --git a/platforms/android.js b/platforms/android.js
index 590f82e..892f7b0 100644
--- a/platforms/android.js
+++ b/platforms/android.js
@@ -201,7 +201,13 @@ function androidPackageName(project_dir) {
function pluginInstalled(plugin_et, project_dir, config_xml_filename) {
var tag_xpath = util.format('./platform[@name="android"]/config-file[@target="%s"]/plugin', config_xml_filename);
- var plugin_name = plugin_et.find(tag_xpath).attrib.name;
+
+ var plugin_tag = plugin_et.find(tag_xpath);
+ if (!plugin_tag) {
+ return false;
+ }
+ var plugin_name = plugin_tag.attrib.name;
+
return (fs.readFileSync(path.resolve(project_dir, config_xml_filename), 'utf8')
.match(new RegExp(plugin_name, "g")) != null);
}
http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/5198005e/platforms/bb10.js
----------------------------------------------------------------------
diff --git a/platforms/bb10.js b/platforms/bb10.js
index fbbd5b5..5d3f649 100644
--- a/platforms/bb10.js
+++ b/platforms/bb10.js
@@ -166,7 +166,10 @@ function srcPath(pluginPath, filename) {
}
function pluginInstalled(plugin_et, project_dir) {
- var config_tag = plugin_et.find('./platform[@name="BlackBerry10"]/config-file[@target="config.xml"]/feature')
+ var config_tag = plugin_et.find('./platform[@name="BlackBerry10"]/config-file[@target="config.xml"]/feature');
+ if (!config_tag) {
+ return false;
+ }
var plugin_name = config_tag.attrib.id;
return (fs.readFileSync(path.resolve(project_dir, 'config.xml'), 'utf8')
.match(new RegExp(plugin_name, "g")) != null);
http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/5198005e/platforms/ios.js
----------------------------------------------------------------------
diff --git a/platforms/ios.js b/platforms/ios.js
index c5f4b7b..b0cec42 100644
--- a/platforms/ios.js
+++ b/platforms/ios.js
@@ -75,7 +75,7 @@ exports.handlePlugin = function (action, project_dir, plugin_dir, plugin_et) {
frameworks = platformTag.findall('./framework');
// move asset files into www
- assets.forEach(function (asset) {
+ assets && assets.forEach(function (asset) {
var srcPath = path.resolve(
plugin_dir, asset.attrib['src']);
@@ -94,7 +94,7 @@ exports.handlePlugin = function (action, project_dir, plugin_dir, plugin_et) {
});
// move native files (source/header/resource)
- sourceFiles.forEach(function (sourceFile) {
+ sourceFiles && sourceFiles.forEach(function (sourceFile) {
var src = sourceFile.attrib['src'],
srcFile = path.resolve(plugin_dir, 'src/ios', src),
targetDir = path.resolve(pluginsDir, getRelativeDir(sourceFile)),
@@ -112,7 +112,7 @@ exports.handlePlugin = function (action, project_dir, plugin_dir, plugin_et) {
}
});
- headerFiles.forEach(function (headerFile) {
+ headerFiles && headerFiles.forEach(function (headerFile) {
var src = headerFile.attrib['src'],
srcFile = path.resolve(plugin_dir, 'src/ios', src),
targetDir = path.resolve(pluginsDir, getRelativeDir(headerFile)),
@@ -130,7 +130,7 @@ exports.handlePlugin = function (action, project_dir, plugin_dir, plugin_et) {
}
});
- resourceFiles.forEach(function (resource) {
+ resourceFiles && resourceFiles.forEach(function (resource) {
var src = resource.attrib['src'],
srcFile = path.resolve(plugin_dir, 'src/ios', src),
destFile = path.resolve(resourcesDir, path.basename(src));
@@ -149,7 +149,7 @@ exports.handlePlugin = function (action, project_dir, plugin_dir, plugin_et) {
}
});
- frameworks.forEach(function (framework) {
+ frameworks && frameworks.forEach(function (framework) {
var src = framework.attrib['src'],
weak = framework.attrib['weak'];
@@ -203,7 +203,7 @@ function updatePlistFile(action, config_path, plugin_et) {
if (action == 'install') {
// add hosts to whitelist (ExternalHosts) in plist
- hosts.forEach(function(host) {
+ hosts && hosts.forEach(function(host) {
plistObj.ExternalHosts.push(host.attrib['origin']);
});
@@ -215,7 +215,7 @@ function updatePlistFile(action, config_path, plugin_et) {
// it's not an entry added by this plugin
for(i=0; i < plistObj.ExternalHosts.length;i++) {
matched = false;
- hosts.forEach(function(host) {
+ hosts && hosts.forEach(function(host) {
if(host === plistObj.ExternalHosts[i]) {
matched = true;
}
@@ -238,6 +238,9 @@ function updatePlistFile(action, config_path, plugin_et) {
function pluginInstalled(plugin_et, config_path) {
var config_tag = plugin_et.find('./platform[@name="ios"]/config-file[@target="config.xml"]/plugin') ||
plugin_et.find('./platform[@name="ios"]/plugins-plist');
+ if (!config_tag) {
+ return false;
+ }
var plugin_name = config_tag.attrib.name || config_tag.attrib.key;
return (fs.readFileSync(config_path, 'utf8').match(new RegExp(plugin_name, "g")) != null);
}
@@ -274,7 +277,6 @@ function updateConfigXml(action, config_path, plugin_et) {
var culprit = pluginsEl.find("plugin[@name='"+name+"']");
pluginsEl.remove(0, culprit);
}
-
}
// add whitelist hosts