From 0afd4ffdda63f1d1dda00e8a86ce0e3f7e61be4a Mon Sep 17 00:00:00 2001 From: Baris Soner Usakli Date: Sun, 2 Feb 2014 01:38:46 -0500 Subject: [PATCH] app.js cleanup --- app.js | 275 ++++++++++++++++++++++++++++++--------------------------- 1 file changed, 144 insertions(+), 131 deletions(-) diff --git a/app.js b/app.js index c4084fa676..4854efec56 100644 --- a/app.js +++ b/app.js @@ -16,172 +16,185 @@ along with this program. If not, see . */ -(function () { - "use strict"; - - // Configuration setup - var nconf = require('nconf'); - nconf.argv().env(); - - var fs = require('fs'), - async = require('async'), - semver = require('semver'), - winston = require('winston'), - path = require('path'), - pkg = require('./package.json'), - utils = require('./public/src/utils.js'), - meta; - - // Runtime environment - global.env = process.env.NODE_ENV || 'production'; - - winston.remove(winston.transports.Console); - winston.add(winston.transports.Console, { - colorize: true - }); - winston.add(winston.transports.File, { - filename: 'error.log', - level: 'error' - }); +"use strict"; + +var nconf = require('nconf'); +nconf.argv().env(); + +var fs = require('fs'), + os = require('os'), + semver = require('semver'), + winston = require('winston'), + path = require('path'), + pkg = require('./package.json'), + utils = require('./public/src/utils.js'); + - // TODO: remove once https://github.com/flatiron/winston/issues/280 is fixed - winston.err = function (err) { - winston.error(err.stack); - }; +global.env = process.env.NODE_ENV || 'production'; +winston.remove(winston.transports.Console); +winston.add(winston.transports.Console, { + colorize: true +}); + +winston.add(winston.transports.File, { + filename: 'error.log', + level: 'error' +}); + +// TODO: remove once https://github.com/flatiron/winston/issues/280 is fixed +winston.err = function (err) { + winston.error(err.stack); +}; + +if(os.platform() === 'linux') { require('child_process').exec('/usr/bin/which convert', function(err, stdout, stderr) { if(err || !stdout) { winston.warn('Couldn\'t find convert. Did you install imagemagick?'); } }); +} - // Log GNU copyright info along with server info - winston.info('NodeBB v' + pkg.version + ' Copyright (C) 2013 DesignCreatePlay Inc.'); - winston.info('This program comes with ABSOLUTELY NO WARRANTY.'); - winston.info('This is free software, and you are welcome to redistribute it under certain conditions.'); - winston.info(''); +// Log GNU copyright info along with server info +winston.info('NodeBB v' + pkg.version + ' Copyright (C) 2013 DesignCreatePlay Inc.'); +winston.info('This program comes with ABSOLUTELY NO WARRANTY.'); +winston.info('This is free software, and you are welcome to redistribute it under certain conditions.'); +winston.info(''); - if (!nconf.get('help') && !nconf.get('setup') && !nconf.get('install') && !nconf.get('upgrade') && fs.existsSync(__dirname + '/config.json')) { - // Load server-side configs - nconf.file({ - file: __dirname + '/config.json' - }); - meta = require('./src/meta'); +if (!nconf.get('help') && !nconf.get('setup') && !nconf.get('install') && !nconf.get('upgrade') && fs.existsSync(__dirname + '/config.json')) { + start(); +} else if (nconf.get('setup') || nconf.get('install') || !fs.existsSync(__dirname + '/config.json')) { + setup(); +} else if (nconf.get('upgrade')) { + upgrade(); +} else/* if (nconf.get('help') */{ + displayHelp(); +}; - nconf.set('url', nconf.get('base_url') + (nconf.get('use_port') ? ':' + nconf.get('port') : '') + nconf.get('relative_path')); - nconf.set('upload_url', path.join(path.sep, nconf.get('relative_path'), 'uploads', path.sep)); - nconf.set('base_dir', __dirname); - winston.info('Time: ' + new Date()); - winston.info('Initializing NodeBB v' + pkg.version + ', on port ' + nconf.get('port') + ', using ' + nconf.get('database') +' store at ' + nconf.get(nconf.get('database') + ':host') + ':' + nconf.get(nconf.get('database') + ':port') + '.'); - winston.info('NodeBB instance bound to: ' + ((nconf.get('bind_address') === "0.0.0.0" || !nconf.get('bind_address')) ? 'Any address (0.0.0.0)' : nconf.get('bind_address'))); +function start() { + nconf.file({ + file: __dirname + '/config.json' + }); - if (process.env.NODE_ENV === 'development') { - winston.info('Base Configuration OK.'); - } + nconf.set('url', nconf.get('base_url') + (nconf.get('use_port') ? ':' + nconf.get('port') : '') + nconf.get('relative_path')); + nconf.set('upload_url', path.join(path.sep, nconf.get('relative_path'), 'uploads', path.sep)); + nconf.set('base_dir', __dirname); - if (!semver.satisfies(require('./node_modules/nodebb-theme-cerulean/package.json').version, pkg.dependencies['nodebb-theme-cerulean'])) { - winston.error('nodebb-theme-cerulean is out of date - please run npm install.'); - } + winston.info('Time: ' + new Date()); + winston.info('Initializing NodeBB v' + pkg.version + ', on port ' + nconf.get('port') + ', using ' + nconf.get('database') +' store at ' + nconf.get(nconf.get('database') + ':host') + ':' + nconf.get(nconf.get('database') + ':port') + '.'); + winston.info('NodeBB instance bound to: ' + ((nconf.get('bind_address') === "0.0.0.0" || !nconf.get('bind_address')) ? 'Any address (0.0.0.0)' : nconf.get('bind_address'))); - if (!semver.satisfies(require('./node_modules/nodebb-theme-vanilla/package.json').version, pkg.dependencies['nodebb-theme-vanilla'])) { - winston.error('nodebb-theme-vanilla is out of date - please run npm install.'); - } + if (process.env.NODE_ENV === 'development') { + winston.info('Base Configuration OK.'); + } + + if (!semver.satisfies(require('./node_modules/nodebb-theme-cerulean/package.json').version, pkg.dependencies['nodebb-theme-cerulean'])) { + winston.error('nodebb-theme-cerulean is out of date - please run npm install.'); + } - require('./src/database').init(function(err) { - meta.configs.init(function () { + if (!semver.satisfies(require('./node_modules/nodebb-theme-vanilla/package.json').version, pkg.dependencies['nodebb-theme-vanilla'])) { + winston.error('nodebb-theme-vanilla is out of date - please run npm install.'); + } - var templates = require('./public/src/templates'), - translator = require('./public/src/translator'), - webserver = require('./src/webserver'), - sockets = require('./src/socket.io'), - plugins = require('./src/plugins'), - notifications = require('./src/notifications'), - upgrade = require('./src/upgrade'); + var meta = require('./src/meta'); - templates.setGlobal('relative_path', nconf.get('relative_path')); + require('./src/database').init(function(err) { + meta.configs.init(function () { - upgrade.check(function(schema_ok) { - if (schema_ok || nconf.get('check-schema') === false) { + var templates = require('./public/src/templates'), + translator = require('./public/src/translator'), + webserver = require('./src/webserver'), + sockets = require('./src/socket.io'), + plugins = require('./src/plugins'), + notifications = require('./src/notifications'), + upgrade = require('./src/upgrade'); - sockets.init(webserver.server); + templates.setGlobal('relative_path', nconf.get('relative_path')); - plugins.init(); + upgrade.check(function(schema_ok) { + if (schema_ok || nconf.get('check-schema') === false) { - translator.loadServer(); + sockets.init(webserver.server); - var customTemplates = meta.config['theme:templates'] ? path.join(__dirname, 'node_modules', meta.config['theme:id'], meta.config['theme:templates']) : false; + plugins.init(); + translator.loadServer(); - utils.walk(path.join(__dirname, 'public/templates'), function (err, tplsToLoad) { - templates.init(tplsToLoad, customTemplates); - }); + var customTemplates = meta.config['theme:templates'] ? path.join(__dirname, 'node_modules', meta.config['theme:id'], meta.config['theme:templates']) : false; - plugins.ready(function() { - templates.ready(webserver.init); - }); + utils.walk(path.join(__dirname, 'public/templates'), function (err, tplsToLoad) { + templates.init(tplsToLoad, customTemplates); + }); - notifications.init(); - } else { - winston.warn('Your NodeBB schema is out-of-date. Please run the following command to bring your dataset up to spec:'); - winston.warn(' node app --upgrade'); - winston.warn('To ignore this error (not recommended):'); - winston.warn(' node app --no-check-schema') - process.exit(); - } - }); + plugins.ready(function() { + templates.ready(webserver.init); + }); + + notifications.init(); + } else { + winston.warn('Your NodeBB schema is out-of-date. Please run the following command to bring your dataset up to spec:'); + winston.warn(' node app --upgrade'); + winston.warn('To ignore this error (not recommended):'); + winston.warn(' node app --no-check-schema') + process.exit(); + } }); }); - } else if (nconf.get('setup') || nconf.get('install') || !fs.existsSync(__dirname + '/config.json')) { - // New install, ask setup questions - if (nconf.get('setup')) { - winston.info('NodeBB Setup Triggered via Command Line'); - } else { - winston.warn('Configuration not found, starting NodeBB setup'); - } + }); +} - nconf.file({ - file: __dirname + '/config.json' - }); +function setup() { + if (nconf.get('setup')) { + winston.info('NodeBB Setup Triggered via Command Line'); + } else { + winston.warn('Configuration not found, starting NodeBB setup'); + } - var templates = require('./public/src/templates'), - install = require('./src/install'); + nconf.file({ + file: __dirname + '/config.json' + }); - winston.info('Welcome to NodeBB!'); - winston.info('This looks like a new installation, so you\'ll have to answer a few questions about your environment before we can proceed.'); - winston.info('Press enter to accept the default setting (shown in brackets).'); + var install = require('./src/install'); - install.setup(function (err) { - if (err) { - winston.error('There was a problem completing NodeBB setup: ', err.message); - } else { - winston.info('NodeBB Setup Completed. Run \'./nodebb start\' to manually start your NodeBB server.'); - } + winston.info('Welcome to NodeBB!'); + winston.info('This looks like a new installation, so you\'ll have to answer a few questions about your environment before we can proceed.'); + winston.info('Press enter to accept the default setting (shown in brackets).'); - process.exit(); - }); + install.setup(function (err) { + if (err) { + winston.error('There was a problem completing NodeBB setup: ', err.message); + } else { + winston.info('NodeBB Setup Completed. Run \'./nodebb start\' to manually start your NodeBB server.'); + } - } else if (nconf.get('upgrade')) { - nconf.file({ - file: __dirname + '/config.json' - }); - require('./src/database').init(function(err) { - meta = require('./src/meta.js'); + process.exit(); + }); +} - meta.configs.init(function () { - require('./src/upgrade').upgrade(); - }); +function upgrade() { + nconf.file({ + file: __dirname + '/config.json' + }); + + var meta = require('./src/meta'); + + require('./src/database').init(function(err) { + meta.configs.init(function () { + require('./src/upgrade').upgrade(); }); - } else/* if (nconf.get('help') */{ - winston.info('Usage: node app [options] [arguments]'); - winston.info(' [NODE_ENV=development | NODE_ENV=production] node app [--start] [arguments]'); - winston.info(''); - winston.info('Options:'); - winston.info(' --help displays this usage information'); - winston.info(' --setup configure your environment and setup NodeBB'); - winston.info(' --upgrade upgrade NodeBB, first read: github.com/designcreateplay/NodeBB/wiki/Upgrading-NodeBB'); - winston.info(' --start manually start NodeBB (default when no options are given)'); - }; -}()); + }); +} + +function displayHelp() { + winston.info('Usage: node app [options] [arguments]'); + winston.info(' [NODE_ENV=development | NODE_ENV=production] node app [--start] [arguments]'); + winston.info(''); + winston.info('Options:'); + winston.info(' --help displays this usage information'); + winston.info(' --setup configure your environment and setup NodeBB'); + winston.info(' --upgrade upgrade NodeBB, first read: github.com/designcreateplay/NodeBB/wiki/Upgrading-NodeBB'); + winston.info(' --start manually start NodeBB (default when no options are given)'); +}