mirror of
https://github.com/bower/bower.git
synced 2026-02-12 06:55:04 -05:00
Reduce nesting and fix analyse not restoring dependants properly in some cases.
This commit is contained in:
@@ -9,7 +9,6 @@ var defaultConfig = require('../config');
|
||||
var copy = require('../util/copy');
|
||||
var createError = require('../util/createError');
|
||||
var endpointParser = require('../util/endpointParser');
|
||||
var F = require('../util/flow');
|
||||
|
||||
function Manager(config) {
|
||||
this._config = config || defaultConfig;
|
||||
@@ -126,7 +125,7 @@ Manager.prototype.install = function () {
|
||||
promises.push(promise);
|
||||
});
|
||||
|
||||
return F.all(promises);
|
||||
return Q.all(promises);
|
||||
})
|
||||
.then(function () {
|
||||
// Resolve with an object where keys are names and values
|
||||
|
||||
@@ -242,45 +242,46 @@ Project.prototype.uninstall = function (names, options) {
|
||||
// If the package has no dependants or the force config is enabled,
|
||||
// mark it to be removed
|
||||
if (!dependants.length || that._config.force) {
|
||||
packages[name] = decEndpoint.dir;
|
||||
packages[name] = decEndpoint.canonicalPkg;
|
||||
return;
|
||||
}
|
||||
|
||||
// Otherwise we need to figure it out if the user really wants to remove it,
|
||||
// even with dependants
|
||||
} else {
|
||||
message = dependants.map(function (dep) { return dep.name; }).join(', ') + ' depends on ' + decEndpoint.name;
|
||||
data = {
|
||||
package: decEndpoint.name,
|
||||
dependants: dependants.map(function (decEndpoint) {
|
||||
return decEndpoint.name;
|
||||
})
|
||||
};
|
||||
message = dependants.map(function (dep) { return dep.name; }).join(', ') + ' depends on ' + decEndpoint.name;
|
||||
data = {
|
||||
package: decEndpoint.name,
|
||||
dependants: dependants.map(function (decEndpoint) {
|
||||
return decEndpoint.name;
|
||||
})
|
||||
};
|
||||
|
||||
// If interactive is disabled, error out
|
||||
if (!that._config.interactive) {
|
||||
throw createError(message, 'ECONFLICT', {
|
||||
skippable: true,
|
||||
data: data
|
||||
});
|
||||
// Question the user
|
||||
} else {
|
||||
deferred.notify({
|
||||
level: 'conflict',
|
||||
id: 'mutual',
|
||||
message: message,
|
||||
data: data
|
||||
});
|
||||
|
||||
return Q.nfcall(promptly.confirm, 'Continue anyway? (y/n)')
|
||||
.then(function (confirmed) {
|
||||
// If the user decided to skip it, remove from the array so that it won't
|
||||
// influence subsequent dependants
|
||||
if (!confirmed) {
|
||||
mout.array.remove(names, name);
|
||||
} else {
|
||||
packages[name] = decEndpoint.dir;
|
||||
}
|
||||
});
|
||||
}
|
||||
// If interactive is disabled, error out
|
||||
if (!that._config.interactive) {
|
||||
throw createError(message, 'ECONFLICT', {
|
||||
skippable: true,
|
||||
data: data
|
||||
});
|
||||
}
|
||||
|
||||
// Question the user
|
||||
deferred.notify({
|
||||
level: 'conflict',
|
||||
id: 'mutual',
|
||||
message: message,
|
||||
data: data
|
||||
});
|
||||
|
||||
return Q.nfcall(promptly.confirm, 'Continue anyway? (y/n)')
|
||||
.then(function (confirmed) {
|
||||
// If the user decided to skip it, remove from the array so that it won't
|
||||
// influence subsequent dependants
|
||||
if (!confirmed) {
|
||||
mout.array.remove(names, name);
|
||||
} else {
|
||||
packages[name] = decEndpoint.canonicalPkg;
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -597,7 +598,7 @@ Project.prototype._restoreNode = function (node, flattened, jsonKey) {
|
||||
}
|
||||
|
||||
node.dependencies = {};
|
||||
node.dependants = {};
|
||||
node.dependants = node.dependants || {};
|
||||
|
||||
mout.object.forOwn(node.pkgMeta[jsonKey || 'dependencies'], function (value, key) {
|
||||
var local = flattened[key];
|
||||
|
||||
Reference in New Issue
Block a user