UNPKG

rapnc

Version:

Node client for RAP 1.0

104 lines (89 loc) 2.79 kB
var express = require('express'); var http = require('http'); var path = require('path'); var fs = require('fs'); var config = require('../config.json'); var program = require('commander'); var helper = require('../helpers'); var logger = helper.logger; var rapMode = config.mode != 'online' ? 'offline' : 'online'; function init(app) { app.set('port', process.env.PORT || 3000); app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.bodyParser()); app.use(express.methodOverride()); // routes app.use(app.router); app.use(express.static(path.join(__dirname, 'public'))); // add error handler if ('development' == app.get('env')) { app.use(express.errorHandler()); } } function initDB() { var Sequelize = require('sequelize'), conn = config.dbinfo; if (!conn) { throw '[ERROR] ' + dbinfo + ' has no config in config.json.'; } var sequelize = new Sequelize(conn.db, conn.user, conn.pass, { host: conn.host, port: conn.port, define: { charset: conn.charset } }); global.sequelize = sequelize; }; function startServer(app, options) { logger.log('') if (options.mode == 'online') { var conn = config.dbinfo; logger.ok('Connecting DB: ' + conn.host + ':' + conn.port + '/' + conn.db, 'serve') } var port = options.port || app.get('port'); http.createServer(app).listen(port, function(){ logger.ok('RAPNC server listening on port ' + port + ' in "' + options.mode.toUpperCase() + '" mode.', 'serve'); }); } function initServer(options) { global.RAP_MODE = options.mode; var app = express(); var server = http.createServer(app); init(app); require('../routes').init(app); if (options.mode == 'online') { initDB(); } startServer(app, options); } function handle(argv) { var options = {}; program .usage('serve [options]') .option('--online', '[online mode] connect to DB, read RAP data in DB.') .option('--offline', '[offline mode] read local downloaded RAP files') .option('--port [port]', 'rapnc server port, default: 3000', 3000) .parse(argv); if (argv.indexOf('-h') != -1 || argv.indexOf('--help') != -1) { program.help(); process.exit(0); } if (program.online) { options.mode = 'online'; } if (program.offline) { options.mode = 'offline'; } if (program.port) { options.port = program.port; } if (!program.online && !program.offline) { options.mode = rapMode; } initServer(options); } exports.handle = handle;