v1.18.x
Julian Lam 7 years ago
parent e76c85b224
commit 741693bc1f

@ -10,7 +10,6 @@ var less = require('less');
var async = require('async'); var async = require('async');
var uglify = require('uglify-js'); var uglify = require('uglify-js');
var nconf = require('nconf'); var nconf = require('nconf');
var _ = require('lodash');
var Benchpress = require('benchpressjs'); var Benchpress = require('benchpressjs');
var app = express(); var app = express();
@ -56,7 +55,7 @@ web.install = function (port) {
extended: true, extended: true,
})); }));
async.parallel([compileLess, compileJS, copyCSS], function (err) { async.parallel([compileLess, compileJS, copyCSS, loadDefaults], function (err) {
if (err) { if (err) {
winston.error(err); winston.error(err);
} }
@ -111,13 +110,24 @@ function welcome(req, res) {
function install(req, res) { function install(req, res) {
req.setTimeout(0); req.setTimeout(0);
var setupEnvVars = _.assign({}, process.env); var setupEnvVars = nconf.get();
for (var i in req.body) { for (var i in req.body) {
if (req.body.hasOwnProperty(i) && !process.env.hasOwnProperty(i)) { if (req.body.hasOwnProperty(i) && !process.env.hasOwnProperty(i)) {
setupEnvVars[i.replace(':', '__')] = req.body[i]; setupEnvVars[i.replace(':', '__')] = req.body[i];
} }
} }
// Flatten any objects in setupEnvVars
const pushToRoot = function (parentKey, key) {
setupEnvVars[parentKey + '__' + key] = setupEnvVars[parentKey][key];
};
for (var j in setupEnvVars) {
if (setupEnvVars.hasOwnProperty(j) && typeof setupEnvVars[j] === 'object' && setupEnvVars[j] !== null) {
Object.keys(setupEnvVars[j]).forEach(pushToRoot.bind(null, j));
delete setupEnvVars[j];
}
}
var child = require('child_process').fork('app', ['--setup'], { var child = require('child_process').fork('app', ['--setup'], {
env: setupEnvVars, env: setupEnvVars,
}); });
@ -137,7 +147,10 @@ function launch(req, res) {
res.json({}); res.json({});
server.close(); server.close();
var child = childProcess.spawn('node', ['loader.js'], { var child;
if (!nconf.get('launchCmd')) {
child = childProcess.spawn('node', ['loader.js'], {
detached: true, detached: true,
stdio: ['ignore', 'ignore', 'ignore'], stdio: ['ignore', 'ignore', 'ignore'],
}); });
@ -146,6 +159,13 @@ function launch(req, res) {
console.log(' "./nodebb stop" to stop the NodeBB server'); console.log(' "./nodebb stop" to stop the NodeBB server');
console.log(' "./nodebb log" to view server output'); console.log(' "./nodebb log" to view server output');
console.log(' "./nodebb restart" to restart NodeBB'); console.log(' "./nodebb restart" to restart NodeBB');
} else {
// Use launchCmd instead, if specified
child = childProcess.exec(nconf.get('launchCmd'), {
detached: true,
stdio: ['ignore', 'ignore', 'ignore'],
});
}
var filesToDelete = [ var filesToDelete = [
'installer.css', 'installer.css',
@ -221,4 +241,20 @@ function copyCSS(next) {
], next); ], next);
} }
function loadDefaults(next) {
var setupDefaultsPath = path.join(__dirname, './data/setup.json');
fs.access(setupDefaultsPath, fs.constants.F_OK | fs.constants.R_OK, function (err) {
if (err) {
// setup.json not found or inaccessible, proceed with no defaults
return setImmediate(next);
}
nconf.file({
file: setupDefaultsPath,
});
next();
});
}
module.exports = web; module.exports = web;

Loading…
Cancel
Save