updated dependency check logic to better handle missing dependencies

v1.18.x
Julian Lam 9 years ago
parent 2e65e8ae7d
commit ba44db5b5b

@ -207,6 +207,10 @@ function start() {
winston.warn('One or more of NodeBB\'s dependent packages are out-of-date. Please run the following command to update them:');
winston.warn(' ./nodebb upgrade');
break;
case 'dependencies-missing':
winston.warn('One or more of NodeBB\'s dependent packages are missing. Please run the following command to update them:');
winston.warn(' ./nodebb upgrade');
break;
default:
if (err.stacktrace !== false) {
winston.error(err.stack);

@ -12,7 +12,9 @@ module.exports = function(Meta) {
Meta.dependencies = {};
Meta.dependencies.check = function(callback) {
var modules = Object.keys(pkg.dependencies);
var modules = Object.keys(pkg.dependencies),
depsOutdated = false,
depsMissing = false;
winston.verbose('Checking dependencies for outdated modules');
async.every(modules, function(module, next) {
@ -33,15 +35,23 @@ module.exports = function(Meta) {
next(true);
} else {
process.stdout.write('[' + 'outdated'.yellow + '] ' + module.bold + ' installed v' + pkgData.version + ', package.json requires ' + pkg.dependencies[module] + '\n');
next(false);
depsOutdated = true;
next(true);
}
} catch(e) {
winston.error('[meta/dependencies] Could not read: ' + module);
process.exit();
process.stdout.write('[' + 'missing'.red + '] ' + module.bold + ' is a required dependency but could not be found\n');
depsMissing = true;
next(true);
}
});
}, function(ok) {
callback(!ok && global.env !== 'development' ? new Error('dependencies-out-of-date') : null);
if (depsMissing) {
callback(new Error('dependencies-missing'));
} else if (depsOutdated) {
callback(global.env !== 'development' ? new Error('dependencies-out-of-date') : null);
} else {
callback(null);
}
});
};
};

Loading…
Cancel
Save