You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.8 KiB
JavaScript
61 lines
1.8 KiB
JavaScript
'use strict';
|
|
|
|
const winston = require('winston');
|
|
const path = require('path');
|
|
const nconf = require('nconf');
|
|
|
|
const { install } = require('../../install/web');
|
|
|
|
async function setup(initConfig) {
|
|
const { paths } = require('../constants');
|
|
const install = require('../install');
|
|
const build = require('../meta/build');
|
|
const prestart = require('../prestart');
|
|
const pkg = require('../../package.json');
|
|
|
|
winston.info('NodeBB Setup Triggered via Command Line');
|
|
|
|
console.log(`\nWelcome to NodeBB v${pkg.version}!`);
|
|
console.log('\nThis looks like a new installation, so you\'ll have to answer a few questions about your environment before we can proceed.');
|
|
console.log('Press enter to accept the default setting (shown in brackets).');
|
|
|
|
install.values = initConfig;
|
|
const data = await install.setup();
|
|
let configFile = paths.config;
|
|
if (nconf.get('config')) {
|
|
configFile = path.resolve(paths.baseDir, nconf.get('config'));
|
|
}
|
|
|
|
prestart.loadConfig(configFile);
|
|
|
|
if (!nconf.get('skip-build')) {
|
|
await build.buildAll();
|
|
}
|
|
|
|
let separator = ' ';
|
|
if (process.stdout.columns > 10) {
|
|
for (let x = 0, cols = process.stdout.columns - 10; x < cols; x += 1) {
|
|
separator += '=';
|
|
}
|
|
}
|
|
console.log(`\n${separator}\n`);
|
|
|
|
if (data.hasOwnProperty('password')) {
|
|
console.log('An administrative user was automatically created for you:');
|
|
console.log(` Username: ${data.username}`);
|
|
console.log(` Password: ${data.password}`);
|
|
console.log('');
|
|
}
|
|
console.log('NodeBB Setup Completed. Run "./nodebb start" to manually start your NodeBB server.');
|
|
|
|
// If I am a child process, notify the parent of the returned data before exiting (useful for notifying
|
|
// hosts of auto-generated username/password during headless setups)
|
|
if (process.send) {
|
|
process.send(data);
|
|
}
|
|
process.exit();
|
|
}
|
|
|
|
exports.setup = setup;
|
|
exports.webInstall = install;
|