Code coverage report for lib/ute.js

Statements: 100% (34 / 34)      Branches: 100% (8 / 8)      Functions: 100% (4 / 4)      Lines: 100% (34 / 34)      Ignored: none     

All files » lib/ » ute.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 752 2 2 2 2 2 2 2 2 2         1 3   3           3                   2   1 1 1 1   1 1 1       1     1     1     1     1 1       1 1     1 1   1     2  
var connectDomain = require('connect-domain');
var ejs           = require('ejs');
var express       = require('express');
var _handlers     = require('./handlers');
var partials      = require('express-partials');
var fs            = require('fs');
var log4js        = require('log4js');
var nconf         = require('nconf');
var p             = require('path');
var util          = require('util');
 
/**
 * class Ute
 */
function Ute(opts) {
  opts = opts || {};
 
  this.opts = {
    appConfDir: opts.appConfDir || 'conf',
    envConfDir: opts.envConfDir || 'conf',
    staticDir : opts.staticDir || 'public'
  };
 
  nconf.file(p.join(this.opts.envConfDir, 'ute.json'));
}
 
/**
 * Start application with:
 * - routes wiring from opts.confDir/routes.json mapped to available handlers, default: conf/routes.json
 * - application port configurable via opts.confDir/<env>.json, default: conf/local.json
 *
 * @param {Array} handlers: handler functions with reques, response, next arguments
 */
Ute.prototype.start = function (handlers) {
 
  var self       = this;
  var app        = express();
  var routesFile = p.join(this.opts.appConfDir, 'routes.json');
  var routes     = JSON.parse(fs.readFileSync(routesFile).toString());
 
  process.on('uncaughtException', function (err) {
    console.error('Uncaught exception: ' + err.message);
    console.trace();
  });
 
  // setup logging
  log4js.configure(p.join(this.opts.envConfDir,'log4js.json'));
 
  // setup partials layout support (must be done prior to wiring routes)
  app.use(partials());
 
  // setup static files
  app.use(express.static(this.opts.staticDir));
 
  // use ejs rendering engine
  app.engine('.html', ejs.__express);
 
  // wire routes
  routes.forEach(function (route) {
    app[route.method.toLowerCase()](route.path, handlers[route.handler]);
  });
 
  // trap unexpected error
  app.use(connectDomain());
  app.use(_handlers.error);
 
  // start the app
  console.log('Starting application %s on port %d', nconf.get('app:name'), nconf.get('app:port'));
  app.listen(nconf.get('app:port'));
 
  return app;
};
 
module.exports = Ute;