Plugin list can now be reloaded 'live'

This commit is contained in:
Egil Moeller 2012-03-19 17:16:49 +01:00
parent 6fe7f2c2b2
commit c591efb352
6 changed files with 152 additions and 83 deletions

View file

@ -2,7 +2,7 @@ exports.isClient = typeof global != "object";
if (!exports.isClient) {
var npm = require("npm/lib/npm.js");
var readInstalled = require("npm/lib/utils/read-installed.js");
var readInstalled = require("./read-installed.js");
var relativize = require("npm/lib/utils/relativize.js");
var readJson = require("npm/lib/utils/read-json.js");
var path = require("path");
@ -10,6 +10,7 @@ if (!exports.isClient) {
var fs = require("fs");
var tsort = require("./tsort");
var util = require("util");
var extend = require("node.extend");
}
exports.prefix = 'ep_';
@ -112,14 +113,19 @@ exports.getPackages = function (cb) {
function flatten(deps) {
Object.keys(deps).forEach(function (name) {
if (name.indexOf(exports.prefix) == 0) {
packages[name] = deps[name];
packages[name] = extend({}, deps[name]);
// Delete anything that creates loops so that the plugin
// list can be sent as JSON to the web client
delete packages[name].dependencies;
delete packages[name].parent;
}
if (deps[name].dependencies !== undefined)
flatten(deps[name].dependencies);
delete deps[name].dependencies;
});
}
flatten([data]);
var tmp = {};
tmp[data.name] = data;
flatten(tmp);
cb(null, packages);
});
}