Merge pull request #5663 from NodeBB/sounds-fix

Fix soundpacks not working, auto install dependencies, defer logging in tests
v1.18.x
Julian Lam 8 years ago committed by GitHub
commit 5ea8145cff

@ -2,10 +2,28 @@
'use strict'; 'use strict';
var cproc; var fs = require('fs');
var args; var path = require('path');
var fs; var cproc = require('child_process');
var path;
// check to make sure dependencies are installed
try {
fs.readFileSync(path.join(__dirname, 'node_modules/async/package.json'));
} catch (e) {
if (e.code === 'ENOENT') {
process.stdout.write('Dependencies not yet installed.\n');
process.stdout.write('Installing them now...\n\n');
cproc.execSync('npm i --production', {
cwd: __dirname,
stdio: [0, 1, 2],
});
} else {
throw e;
}
}
var minimist;
var request; var request;
var semver; var semver;
var prompt; var prompt;
@ -13,25 +31,23 @@ var async;
try { try {
require('colors'); require('colors');
cproc = require('child_process'); minimist = require('minimist');
args = require('minimist')(process.argv.slice(2));
fs = require('fs');
path = require('path');
request = require('request'); request = require('request');
semver = require('semver'); semver = require('semver');
prompt = require('prompt'); prompt = require('prompt');
async = require('async'); async = require('async');
} catch (e) { } catch (e) {
if (e.code === 'MODULE_NOT_FOUND') { process.stdout.write(
process.stdout.write('NodeBB could not be started because it\'s dependencies have not been installed.\n'); '\x1b[31mNodeBB could not be initialised because there was an error while loading dependencies.\n' +
process.stdout.write('Please ensure that you have executed "npm install --production" prior to running NodeBB.\n\n'); 'Please run "\x1b[33mnpm install --production\x1b[31m" and try again.\x1b[0m\n\n' +
process.stdout.write('For more information, please see: https://docs.nodebb.org/en/latest/installing/os.html\n\n'); 'For more information, please see: https://docs.nodebb.org/en/latest/installing/os.html\n\n'
process.stdout.write('Could not start: ' + e.code + '\n'); );
process.exit(1); throw e;
}
} }
var args = minimist(process.argv.slice(2));
var loaderPath = path.join(__dirname, 'loader.js'); var loaderPath = path.join(__dirname, 'loader.js');
var appPath = path.join(__dirname, 'app.js'); var appPath = path.join(__dirname, 'app.js');

@ -263,12 +263,12 @@ module.exports = function (Plugins) {
soundpack.id = pluginData.id; soundpack.id = pluginData.id;
soundpack.dir = path.join(pluginData.path, soundpack.dir); soundpack.dir = path.join(pluginData.path, soundpack.dir);
async.each(Object.keys(soundpack.sounds), function (key, next) { async.each(Object.keys(soundpack.sounds), function (key, next) {
file.exists(path.join(soundpack.dir, soundpack.sounds[key]), function (exists) { file.exists(path.join(soundpack.dir, soundpack.sounds[key]), function (err, exists) {
if (!exists) { if (!exists) {
delete soundpack.sounds[key]; delete soundpack.sounds[key];
} }
next(); next(err);
}); });
}, function (err) { }, function (err) {
if (err) { if (err) {

@ -0,0 +1,40 @@
'use strict';
var util = require('util');
var winston = require('winston');
function DeferLogger(options) {
options = options || {};
this.name = 'DeferLogger';
this.level = options.level || 'info';
this.logged = options.logged;
}
util.inherits(DeferLogger, winston.Transport);
DeferLogger.prototype.log = function log(level, msg, meta, callback) {
this.logged.push([level, msg, meta]);
callback(null, true);
};
var winstonLogged = [];
before(function () {
// defer winston logs until the end
winston.remove(winston.transports.Console);
winston.add(DeferLogger, {
logged: winstonLogged,
});
});
after(function () {
console.log('\n\n');
var con = new winston.transports.Console();
winstonLogged.forEach(function (args) {
con.log(args[0], args[1], args[2], function () {});
});
});
Loading…
Cancel
Save