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('One or more of NodeBB\'s dependent packages are out-of-date. Please run the following command to update them:');
winston.warn(' ./nodebb upgrade'); winston.warn(' ./nodebb upgrade');
break; 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: default:
if (err.stacktrace !== false) { if (err.stacktrace !== false) {
winston.error(err.stack); winston.error(err.stack);

@ -12,7 +12,9 @@ module.exports = function(Meta) {
Meta.dependencies = {}; Meta.dependencies = {};
Meta.dependencies.check = function(callback) { 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'); winston.verbose('Checking dependencies for outdated modules');
async.every(modules, function(module, next) { async.every(modules, function(module, next) {
@ -33,15 +35,23 @@ module.exports = function(Meta) {
next(true); next(true);
} else { } else {
process.stdout.write('[' + 'outdated'.yellow + '] ' + module.bold + ' installed v' + pkgData.version + ', package.json requires ' + pkg.dependencies[module] + '\n'); 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) { } catch(e) {
winston.error('[meta/dependencies] Could not read: ' + module); process.stdout.write('[' + 'missing'.red + '] ' + module.bold + ' is a required dependency but could not be found\n');
process.exit(); depsMissing = true;
next(true);
} }
}); });
}, function(ok) { }, 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