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/07/11 23:50:23 UTC
[23/43] git commit: 0.9.1. [CB-3499] Uninstalled plugins have their
js-module www assets properly removed now.
0.9.1. [CB-3499] Uninstalled plugins have their js-module www assets properly removed now.
Project: http://git-wip-us.apache.org/repos/asf/cordova-plugman/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugman/commit/12db6410
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugman/tree/12db6410
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugman/diff/12db6410
Branch: refs/heads/plugman-registry
Commit: 12db64101364df6ada5be56ef86c2f309ec29276
Parents: ba9d4b0
Author: Fil Maj <ma...@gmail.com>
Authored: Wed Jul 10 12:44:16 2013 -0700
Committer: Fil Maj <ma...@gmail.com>
Committed: Wed Jul 10 12:44:16 2013 -0700
----------------------------------------------------------------------
package.json | 2 +-
spec/prepare.spec.js | 22 +++++++++++++++++++---
src/prepare.js | 28 +++++++++++++++++++++++-----
3 files changed, 43 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/12db6410/package.json
----------------------------------------------------------------------
diff --git a/package.json b/package.json
index 1229831..2453a4f 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"author": "Andrew Lunny <al...@gmail.com>",
"name": "plugman",
"description": "install/uninstall Cordova plugins",
- "version": "0.9.0",
+ "version": "0.9.1",
"repository": {
"type": "git",
"url": "git://git-wip-us.apache.org/repos/asf/cordova-plugman.git"
http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/12db6410/spec/prepare.spec.js
----------------------------------------------------------------------
diff --git a/spec/prepare.spec.js b/spec/prepare.spec.js
index 5bf51ff..791023d 100644
--- a/spec/prepare.spec.js
+++ b/spec/prepare.spec.js
@@ -15,12 +15,13 @@ var json = path.join(temp, 'assets', 'www', 'cordova_plugins.json');
var js = path.join(temp, 'assets', 'www', 'cordova_plugins.js');
describe('prepare', function() {
- var proc, platform_json, write, stat, read, parseET, mkdir;
+ var proc, platform_json, write, stat, read, parseET, mkdir, rm;
var root, findall, find;
beforeEach(function() {
+ rm = spyOn(shell, 'rm');
mkdir = spyOn(shell, 'mkdir');
proc = spyOn(config_changes, 'process');
- platform_json = spyOn(config_changes, 'get_platform_json').andReturn({installed_plugins:{},dependent_plugins:{}});
+ platform_json = spyOn(config_changes, 'get_platform_json').andReturn({installed_plugins:{},dependent_plugins:{},prepare_queue:{uninstalled:[]}});
write = spyOn(fs, 'writeFileSync');
stat = spyOn(fs, 'statSync').andReturn({isDirectory:function() { return true; }});
root = jasmine.createSpy('ElementTree getroot').andReturn({
@@ -49,7 +50,7 @@ describe('prepare', function() {
beforeEach(function() {
child_one = jasmine.createSpy('getchildren').andReturn([]);
read = spyOn(fs, 'readFileSync').andReturn('JAVASCRIPT!');
- platform_json.andReturn({installed_plugins:{plugin_one:'',plugin_two:''},dependent_plugins:{}});
+ platform_json.andReturn({installed_plugins:{plugin_one:'',plugin_two:''},dependent_plugins:{},prepare_queue:{uninstalled:[]}});
findall.andReturn([
{attrib:{src:'somedir', name:'NAME'}, getchildren:child_one},
{attrib:{src:'someotherdir', name:'NAME'}, getchildren:child_one}
@@ -64,6 +65,21 @@ describe('prepare', function() {
expect(write).toHaveBeenCalledWith(path.join(temp, 'assets', 'www', 'plugins', 'someid', 'somedir'), jasmine.any(String), 'utf-8');
expect(write).toHaveBeenCalledWith(path.join(temp, 'assets', 'www', 'plugins', 'someid', 'someotherdir'), jasmine.any(String), 'utf-8');
});
+ describe('uninstallation/removal', function() {
+ var existsSync;
+ beforeEach(function() {
+ existsSync = spyOn(fs, 'existsSync').andReturn(true);
+ platform_json.andReturn({installed_plugins:{},dependent_plugins:{},prepare_queue:{uninstalled:[{
+ plugin:'nickelback',
+ id:'nickelback',
+ topLevel:true
+ }]}});
+ });
+ it('should remove any www/plugins directories related to plugins being queued for removal', function() {
+ prepare(temp, 'android', plugins_dir);
+ expect(rm).toHaveBeenCalledWith('-rf', path.join(temp, 'assets', 'www', 'plugins', 'nickelback'));
+ });
+ });
});
it('should call into config-changes\' process method to do config processing', function() {
prepare(temp, 'android', plugins_dir);
http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/12db6410/src/prepare.js
----------------------------------------------------------------------
diff --git a/src/prepare.js b/src/prepare.js
index f898b84..3e95437 100644
--- a/src/prepare.js
+++ b/src/prepare.js
@@ -41,15 +41,33 @@ module.exports = function handlePrepare(project_dir, platform, plugins_dir) {
// - For each js-module (general first, then platform) build up an object storing the path and any clobbers, merges and runs for it.
// - Write this object into www/cordova_plugins.json.
// - Cordova.js contains code to load them at runtime from that file.
+ require('../plugman').emit('log', 'Preparing ' + platform + ' project...');
+ var platform_json = config_changes.get_platform_json(plugins_dir, platform);
+ var wwwDir = platform_modules[platform].www_dir(project_dir);
- require('../plugman').emit('log', 'Preparing ' + platform + ' project, starting with processing of config changes...');
- config_changes.process(plugins_dir, project_dir, platform);
+ // Check if there are any plugins queued for uninstallation, and if so, remove any of their plugin web assets loaded in
+ // via <js-module> elements
+ var plugins_to_uninstall = platform_json.prepare_queue.uninstalled;
+ if (plugins_to_uninstall && plugins_to_uninstall.length) {
+ var plugins_www = path.join(wwwDir, 'plugins');
+ if (fs.existsSync(plugins_www)) {
+ plugins_to_uninstall.forEach(function(plug) {
+ var id = plug.id;
+ var plugin_modules = path.join(plugins_www, id);
+ if (fs.existsSync(plugin_modules)) {
+ require('../plugman').emit('log', 'Removing plugins directory from www "'+plugin_modules+'"');
+ shell.rm('-rf', plugin_modules);
+ }
+ });
+ }
+ }
- var wwwDir = platform_modules[platform].www_dir(project_dir);
- var platform_json = config_changes.get_platform_json(plugins_dir, platform);
- var plugins = Object.keys(platform_json.installed_plugins).concat(Object.keys(platform_json.dependent_plugins));
+ require('../plugman').emit('log', 'Processing configuration changes for plugins.');
+ config_changes.process(plugins_dir, project_dir, platform);
+ platform_json = config_changes.get_platform_json(plugins_dir, platform);
// This array holds all the metadata for each module and ends up in cordova_plugins.json
+ var plugins = Object.keys(platform_json.installed_plugins).concat(Object.keys(platform_json.dependent_plugins));
var moduleObjects = [];
require('../plugman').emit('log', 'Iterating over installed plugins:', plugins);