You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by fi...@apache.org on 2013/07/09 23:10:57 UTC

[4/4] git commit: Work for [CB-4077]: uninstallation should look at platform json file for determining which plugins to iterate over. fetching multiple plugins from git should not collide in temp dir.

Work for [CB-4077]: uninstallation should look at platform json file for determining which plugins to iterate over. fetching multiple plugins from git should not collide in temp dir.


Project: http://git-wip-us.apache.org/repos/asf/cordova-plugman/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugman/commit/2b70e6b7
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugman/tree/2b70e6b7
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugman/diff/2b70e6b7

Branch: refs/heads/CB-4077
Commit: 2b70e6b7d29c4f5ee5facd4872264a6af19470de
Parents: 03e8349
Author: Fil Maj <ma...@gmail.com>
Authored: Tue Jul 9 14:10:48 2013 -0700
Committer: Fil Maj <ma...@gmail.com>
Committed: Tue Jul 9 14:10:48 2013 -0700

----------------------------------------------------------------------
 spec/prepare.spec.js | 7 +++----
 src/install.js       | 6 ++----
 src/prepare.js       | 8 +++-----
 src/util/plugins.js  | 6 +++---
 4 files changed, 11 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/2b70e6b7/spec/prepare.spec.js
----------------------------------------------------------------------
diff --git a/spec/prepare.spec.js b/spec/prepare.spec.js
index 675444a..5bf51ff 100644
--- a/spec/prepare.spec.js
+++ b/spec/prepare.spec.js
@@ -15,12 +15,12 @@ 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, readdir, write, stat, read, parseET, mkdir;
+    var proc, platform_json, write, stat, read, parseET, mkdir;
     var root, findall, find;
     beforeEach(function() {
         mkdir = spyOn(shell, 'mkdir');
         proc = spyOn(config_changes, 'process');
-        readdir = spyOn(fs, 'readdirSync').andReturn([]);
+        platform_json = spyOn(config_changes, 'get_platform_json').andReturn({installed_plugins:{},dependent_plugins:{}});
         write = spyOn(fs, 'writeFileSync');
         stat = spyOn(fs, 'statSync').andReturn({isDirectory:function() { return true; }});
         root = jasmine.createSpy('ElementTree getroot').andReturn({
@@ -46,11 +46,10 @@ describe('prepare', function() {
     });
     describe('handling of js-modules', function() {
         var read, child_one;
-        var fake_plugins = ['plugin_one', 'plugin_two'];
         beforeEach(function() {
             child_one = jasmine.createSpy('getchildren').andReturn([]);
             read = spyOn(fs, 'readFileSync').andReturn('JAVASCRIPT!');
-            readdir.andReturn(fake_plugins);
+            platform_json.andReturn({installed_plugins:{plugin_one:'',plugin_two:''},dependent_plugins:{}});
             findall.andReturn([
                 {attrib:{src:'somedir', name:'NAME'}, getchildren:child_one},
                 {attrib:{src:'someotherdir', name:'NAME'}, getchildren:child_one}

http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/2b70e6b7/src/install.js
----------------------------------------------------------------------
diff --git a/src/install.js b/src/install.js
index 2c2c025..3868ccf 100644
--- a/src/install.js
+++ b/src/install.js
@@ -184,14 +184,12 @@ function runInstall(actions, platform, project_dir, plugin_dir, plugins_dir, opt
                     var result = shell.exec('git rev-parse --show-toplevel', { silent:true, async:false});
                     if (result.code === 128) {
                         var err = new Error('Error: Plugin ' + plugin_id + ' is not in git repository. All plugins must be in a git repository.');
-                        if (callback) callback(err);
+                        if (callback) return callback(err);
                         else throw err;
-                        return;
                     } else if(result.code > 0) {
                         var err = new Error('Error trying to locate git repository for plugin.');
-                        if (callback) callback(err);
+                        if (callback) return callback(err);
                         else throw err;
-                        return;
                     }
 
                     var dep_url = path.join(result.output.trim(), dep_subdir);

http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/2b70e6b7/src/prepare.js
----------------------------------------------------------------------
diff --git a/src/prepare.js b/src/prepare.js
index 4904975..f898b84 100644
--- a/src/prepare.js
+++ b/src/prepare.js
@@ -46,14 +46,12 @@ module.exports = function handlePrepare(project_dir, platform, plugins_dir) {
     config_changes.process(plugins_dir, project_dir, platform);
 
     var wwwDir = platform_modules[platform].www_dir(project_dir);
-    // TODO: perhaps this should look at platform json files to determine which plugins to prepare?
-    var plugins = fs.readdirSync(plugins_dir).filter(function(p) {
-        return p != '.svn' && p != 'CVS';
-    });
+    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));
 
     // This array holds all the metadata for each module and ends up in cordova_plugins.json
     var moduleObjects = [];
-    require('../plugman').emit('log', 'Iterating over installed plugins...');
+    require('../plugman').emit('log', 'Iterating over installed plugins:', plugins);
 
     plugins && plugins.forEach(function(plugin) {
         var pluginDir = path.join(plugins_dir, plugin);

http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/2b70e6b7/src/util/plugins.js
----------------------------------------------------------------------
diff --git a/src/util/plugins.js b/src/util/plugins.js
index 90b24f7..7153926 100644
--- a/src/util/plugins.js
+++ b/src/util/plugins.js
@@ -23,8 +23,7 @@ var http = require('http'),
     fs = require('fs'),
     util = require('util'),
     shell = require('shelljs'),
-    xml_helpers = require('./xml-helpers'),
-    tmp_dir = path.join(os.tmpdir(), 'plugman-tmp');
+    xml_helpers = require('./xml-helpers');
 
 module.exports = {
     searchAndReplace:require('./search-and-replace'),
@@ -35,6 +34,7 @@ module.exports = {
             if (callback) return callback(err);
             else throw err;
         }
+        var tmp_dir = path.join(os.tmpdir(), 'plugman-tmp' +(new Date).valueOf());
 
         shell.rm('-rf', tmp_dir);
 
@@ -69,8 +69,8 @@ module.exports = {
 
                 // TODO: what if a plugin dependended on different subdirectories of the same plugin? this would fail.
                 // should probably copy over entire plugin git repo contents into plugins_dir and handle subdir seperately during install.
-                require('../../plugman').emit('log', 'Copying fetched plugin over "' + plugin_dir + '"...');
                 var plugin_dir = path.join(plugins_dir, plugin_id);
+                require('../../plugman').emit('log', 'Copying fetched plugin over "' + plugin_dir + '"...');
                 shell.cp('-R', path.join(tmp_dir, '*'), plugin_dir);
 
                 require('../../plugman').emit('log', 'Plugin "' + plugin_id + '" fetched.');