You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by da...@apache.org on 2016/10/24 10:35:24 UTC
[02/21] cordova-windows git commit: CB-11657 Add bom to www after
plugin operations
CB-11657 Add bom to www after plugin operations
Since cordova is not calling `prepare` immediately after plugin
has been installed/removed, we need to take care of adding BOM ourselves.
Otherwise user can run into situation when project, built from Visual
Studio immediately after installation/removal of plugin, will not pass
WACK tests due to missing BOM in some files.
Project: http://git-wip-us.apache.org/repos/asf/cordova-windows/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-windows/commit/df242ce8
Tree: http://git-wip-us.apache.org/repos/asf/cordova-windows/tree/df242ce8
Diff: http://git-wip-us.apache.org/repos/asf/cordova-windows/diff/df242ce8
Branch: refs/heads/4.4.x
Commit: df242ce83afc781508609787defb089fc7649574
Parents: 5e45d70
Author: Vladimir Kotikov <v-...@microsoft.com>
Authored: Wed Aug 10 13:04:24 2016 +0300
Committer: daserge <v-...@microsoft.com>
Committed: Thu Oct 20 20:54:53 2016 +0300
----------------------------------------------------------------------
template/cordova/Api.js | 13 ++++++++++++
template/cordova/lib/prepare.js | 41 ++++++++++++++++++++++++------------
2 files changed, 40 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/df242ce8/template/cordova/Api.js
----------------------------------------------------------------------
diff --git a/template/cordova/Api.js b/template/cordova/Api.js
index 00cf29a..1fb62ce 100644
--- a/template/cordova/Api.js
+++ b/template/cordova/Api.js
@@ -179,6 +179,8 @@ Api.prototype.prepare = function (cordovaProject, prepareOptions) {
*/
Api.prototype.addPlugin = function (plugin, installOptions) {
+ var self = this;
+
var jsProject = JsprojManager.getProject(this.root);
installOptions = installOptions || {};
installOptions.variables = installOptions.variables || {};
@@ -189,6 +191,11 @@ Api.prototype.addPlugin = function (plugin, installOptions) {
return PluginManager.get(this.platform, this.locations, jsProject)
.addPlugin(plugin, installOptions)
+ .then(function () {
+ // CB-11657 Add BOM to www files here because files added by plugin
+ // probably don't have it. Prepare would add BOM but it might not be called
+ return require('./lib/prepare').addBOMSignature(self.locations.www);
+ })
// CB-11022 return non-falsy value to indicate
// that there is no need to run prepare after
.thenResolve(true);
@@ -208,9 +215,15 @@ Api.prototype.addPlugin = function (plugin, installOptions) {
* CordovaError instance.
*/
Api.prototype.removePlugin = function (plugin, uninstallOptions) {
+ var self = this;
var jsProject = JsprojManager.getProject(this.root);
return PluginManager.get(this.platform, this.locations, jsProject)
.removePlugin(plugin, uninstallOptions)
+ .then(function () {
+ // CB-11657 Add BOM to cordova_plugins, since it is was
+ // regenerated after plugin uninstallation and does not have BOM
+ return require('./lib/prepare').addBOMToFile(path.resolve(self.locations.www, 'cordova_plugins.js'));
+ })
// CB-11022 return non-falsy value to indicate
// that there is no need to run prepare after
.thenResolve(true);
http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/df242ce8/template/cordova/lib/prepare.js
----------------------------------------------------------------------
diff --git a/template/cordova/lib/prepare.js b/template/cordova/lib/prepare.js
index 0067803..53838d5 100644
--- a/template/cordova/lib/prepare.js
+++ b/template/cordova/lib/prepare.js
@@ -497,24 +497,37 @@ module.exports.clean = function (options) {
*/
function addBOMSignature(directory) {
shell.ls('-R', directory)
- .forEach(function (file) {
- if (!file.match(/\.(js|htm|html|css|json)$/i)) {
- return;
- }
+ .map(function (file) {
+ return path.join(directory, file);
+ })
+ .forEach(addBOMToFile);
+}
- var filePath = path.join(directory, file);
- // skip if this is a folder
- if (!fs.lstatSync(filePath).isFile()) {
- return;
- }
+/**
+ * Adds BOM signature at the beginning of file, specified by absolute
+ * path. Ignores directories and non-js, -html or -css files.
+ *
+ * @param {String} file Absolute path to file to add BOM to
+ */
+function addBOMToFile(file) {
+ if (!file.match(/\.(js|htm|html|css|json)$/i)) {
+ return;
+ }
- var content = fs.readFileSync(filePath);
- if (content[0] !== 0xEF && content[1] !== 0xBE && content[2] !== 0xBB) {
- fs.writeFileSync(filePath, '\ufeff' + content);
- }
- });
+ // skip if this is a folder
+ if (!fs.lstatSync(file).isFile()) {
+ return;
+ }
+
+ var content = fs.readFileSync(file);
+ if (content[0] !== 0xEF && content[1] !== 0xBE && content[2] !== 0xBB) {
+ fs.writeFileSync(file, '\ufeff' + content);
+ }
}
+module.exports.addBOMSignature = addBOMSignature;
+module.exports.addBOMToFile = addBOMToFile;
+
/**
* Updates config files in project based on app's config.xml and config munge,
* generated by plugins.
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org