aaronbullard/node-di-bootstrap

View on GitHub
src/bootstrap.js

Summary

Maintainability
A
0 mins
Test Coverage
/*
|--------------------------------------------------------------------------
| Application Environment
|--------------------------------------------------------------------------
|
| This value determines the "environment" your application is currently
| running in. This may determine how you prefer to configure various
| services your application utilizes. Set this in your ".env" file.
|
*/
// Set environment variables
require('dotenv').load();


// Global functions
global.root = function(){
  return __dirname + "/..";
}

global.src = function(){
  return root() + '/src';
}

global.spec = function(){
  return root() + "/spec";
}

global.env = function(key, fallback){
  return process.env[key] || fallback;
}

global.dd = function(data){
    console.log(data);
    process.exit();
}


/*
|--------------------------------------------------------------------------
| Create The Application
|--------------------------------------------------------------------------
|
| The first thing we will do is create a new Node application instance
| which serves as the "glue" for all the components of Fed API, and is
| the IoC container for the system binding all of the various parts.
|
*/
var Container = require('node-dicontainer');

Container.instance('config', require('./config.js'));


/*
|--------------------------------------------------------------------------
| Bind Important Interfaces
|--------------------------------------------------------------------------
|
| Next, we need to bind some important interfaces into the container so
| we will be able to resolve them when needed. The kernels serve the
| incoming requests to this application from both the web and CLI.
|
*/

// Load Service Providers
Container.bindShared('ServiceProviders', function(container){
  return container.config.service_providers.map(function(path){
    return require(path);
  });
});


// Register Service Providers
Container.ServiceProviders.forEach(function(provider){
    provider.register( Container );
});


/*
|--------------------------------------------------------------------------
| Return The Application
|--------------------------------------------------------------------------
|
| This script returns the application instance. The instance is given to
| the calling script so we can separate the building of the instances
| from the actual running of the application and sending responses.
|
*/
module.exports = Container;