hummingbird-node
Version:
Stupidly simple social media streaming for Node.js
124 lines (87 loc) • 2.28 kB
JavaScript
var path = require('path');
// App dependencies
var utils = require('./utils.js');
var Interface = require('./interface.js');
module.exports = {
/**
* Boot the Application
*/
boot: function() {
this.initialize(); // Config
this.adapter(); // Adapter
this.interface(); // Inteface
this.singletons(); // lib
this.queue(); // Connect queue
this.services();
},
/**
* Initialize Configuration/App
*/
initialize: function() {
// don't run twice
if (HB) return HB;
// initialize hummingbird object
var HB = {
path: utils.loadPaths(),
env: process.env['NODE_ENV'] || 'development'
};
// load primary config into memory
HB.config = require(utils.path('config', 'config'));
// reconcile environment config
var env_config = require(utils.path('config', HB.env));
HB.config = utils.merge(HB.config, env_config);
// load active plugins into memory
HB.plugins = {};
for (var p in HB.config.plugins) {
if (HB.config.plugins[p]) HB.plugins[p] = require(utils.path('plugins', p));
}
// load active services into memory
HB.services = {};
for (var s in HB.config.services) {
if (HB.config.services[s].active) HB.services[s] = require(utils.path('lib', 'services', s));
}
// new hb instance
//HB.hb = require(utils.path('lib','hummingbird'));
// set global
global.HB = HB;
return HB;
},
/**
* Initialize Adapter
*/
adapter: function() {
require('./adapter.js').initialize();
},
/**
* Initialize Interface
*/
interface: function() {
var i = new Interface();
i.initialize();
i.loadRoutes();
i.start();
},
/**
* Initialize Singletons
*/
singletons: function() {
require('./switchboard.js');
require('./responder.js');
require('./pipeline.js');
},
/**
* Connect Queue
*/
queue: function() {
var Queue = require('./queue.js');
Queue.connect(HB.config.interfaces.redis);
},
/**
* Initialize Services
*/
services: function() {
var Services = require('./services.js');
Services.load();
Services.boot();
}
};